在重新編碼數字變數的值時,如下面的var1變成字符值,有時會有一個簡單的模式。例如,假設var1中的數字值1:4需要分別重新編碼為LETTERS[27-(4:1)]。
在這種情況下,是否可以避免寫var1 = recode(var1,1="W",2="X",3="Y",4="Z"),而是回圈重新編碼?
library(tidyverse)
(dat <- data. frame(var1 = rep(1。 4,2)。 id = 1。 8))
mutate(dat, var1 = recode(var1,`1`="W", `2`="X", `3`="Y", `4`="Z")) # 這很有效,但是我們能不能
# 回圈它呢?
uj5u.com熱心網友回復:
我們可以使用一個矢量的方法,不需要回圈。tail和帶有[的基礎子集將在這里發揮作用。
library(dplyr)
dat %> % mutate(var1=tail(LETTERS。 max(var1))[var1] %> %為。 factor)
var1 id
1 W 1
2 X 2
3 Y 3
4 Z4
5 W 5
6 X 6
7 Y 7
8 Z 8
data
dat <- data. frame(var1 = rep(1: 4,2)。 id = 1。 8)
data2
dat2 <- data. frame(var1 = c( 2, 1, 3, 1, 4。 1), id = 1。 8))
var1 id
1 2 1
2 1 2
3 3 3
41 4
5 4 5
6 3 6
7 2 7
81 8
output2
var1 id
1 X 1
2 W 2
3 Y 3
4 W 4
5 Z 5
6 Y 6
7 X 7
8 W 8
uj5u.com熱心網友回復:
你可以使用-
library(dplyr)
dat %> % mutate(var1 = LETTERS[長度(LETTERS)-max(var1) var1])
# var1 id
#1 W 1
#2 X 2 #2 X 2
#3 Y 3 #3 Y 3
#4 Z 4
#5 W 5 #5 W 5
#6 X 6 #6 X 6
#7 Y 7 #7 Y 7
#8 Z 8
uj5u.com熱心網友回復:
你也可以直接使用factor()的labs引數
。library(dplyr)
dat <- data. frame(var1 = rep(1。 4,2)。 id = 1。 8) %>%
mutate(var1 = factor(var1。 標簽 = tail(LETTERS, 4)))
資料
var1 id
1 W 1
2 X 2
3 Y 3
4 Z4
5 W 5
6 X 6
7 Y 7
8 Z 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/327354.html
標籤:
