我正在清理数据框,其中数据已被错误编码。我需要重新编码给定变量中的一些数据,以便交换用于表示整数级别的数字,例如,对于var1:2s应为3s,3s应为2s。
对于比下面的代码稍微大一些的变量(~20),有更简洁的方法吗?
起点(df):
df1 <- data.frame(var1=c(1,1,2,2,2,2,3,3,3,4),var2=c(1,1,2,2,3,3,4,4,5,5),var3=c(5,5,6,6,7,7,7,8,8,8),var4=c(4,4,5,5,6,6,7,7,1,1))
期望结果(df):
df2 <- data.frame(var1=c(1,1,3,3,3,3,2,2,2,4),var2=c(1,1,2,2,3,3,5,5,4,4),var3=c(8,8,6,6,7,7,7,5,5,5),var4=c(7,7,8,8,9,9,5,5,1,1))
当前代码:
df1$var3[df1$var3==5] <- 55
df1$var3[df1$var3==8] <- 88
df1$var3[df1$var3==55] <- 8
df1$var3[df1$var3==88] <- 5
答案 0 :(得分:2)
您可以使用uint32_t size;
int result = read(fd, &size, sizeof(uint32_t));
中的mapvalues
,如下所示:
plyr
答案 1 :(得分:1)
您可以使用dplyr中的函数recode()
:
> library(dplyr)
> df1$var1
[1] 1 1 2 2 2 2 3 3 3 4
> recode(df1$var1, `2` = 3, `3` = 2)
[1] 1 1 3 3 3 3 2 2 2 4
答案 2 :(得分:1)
为了获得可读性并假设无法使用模式重新分配值,我建议使用deck = [x +" " + y for x in RANKS for y in SUITE]
中的case_when
。
dplyr