![](/img/trans.png)
[英]How to replace all columns in matrix with NA based on variable in another dataframe?
[英]How to replace values in all columns of a dataframe by a value in another dataframe
我有一个匿名数据的数据框,如下所示:
31 32 36 NA
31 32 34 NA
31 32 NA NA
32 33 NA NA
我有一个“字典”,可以将每个匿名值映射到个人的ID,如下所示:
ID Number
Male1 31
Male2 32
Female1 33
Female2 34
Female3 36
我想用存储在第二个数据帧中的相应ID替换第一个数据帧中的所有值,如下所示:
Male1 Male2 Female3 NA
Male1 Male2 Female2 NA
Male1 Male2 NA NA
Male2 Female1 NA NA
我尝试使用ifelse
语句和replace
,但是到目前为止没有任何效果。 我试过了:
Test2 <- ifelse(Dataframe1 == Dataframe2$Number, Dataframe2$ID, Dataframe2$ID)
但这仅替换了数据框中相同值位于相同位置的实例,因此我得到了:
Male1 32 36 NA
31 32 34 NA
31 32 NA NA
32 33 NA NA
我几乎完全陷入困境。 我真的很感谢您的帮助,尤其是解决方案的解释-我是一名研究生,真的是与r合作的新手。
非常感谢!
使用mapvalues
从plyr包:
df1 <- read.table(text = " 31 32 36 NA
31 32 34 NA
31 32 NA NA
32 33 NA NA")
df2 <- read.table(text ="ID Number
Male1 31
Male2 32
Female1 33
Female2 34
Female3 36", header = T)
df3 <- df1
df3[,] <- lapply(df1, function(x) plyr::mapvalues(x, from = df2$Number, to = df2$ID))
结果是:
V1 V2 V3 V4
1 Male1 Male2 Female3 <NA>
2 Male1 Male2 Female2 <NA>
3 Male1 Male2 <NA> <NA>
4 Male2 Female1 <NA> <NA>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.