繁体   English   中英

如何用另一个数据框中的值替换一个数据框中的所有列中的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM