r - 如何合并表并匹配具有多个因素的列的名称

标签 r

我想合并这两个表,但找不到更好的方法。通常,如果我使用合并,则必须至少有一列相互匹配...

data<-data.frame(A=c("A1","A2","A3","A4"),B=c("13131,256","12141","256","684"))
   A         B
1 A1 13131,256 
2 A2     12141
3 A3       256
4 A4       684

我想根据下表合并B列:
BNAME<-data.frame(NAME=c("Red","Green","Yellow","Black"),B=c("13131","256","12141","684"))
    NAME     B
1    Red 13131
2  Green   256
3 Yellow 12141
4  Black   684

所以最终的格式应该是这样的:
  A         B      NAME
1 A1 13131,256 Red,Green
2 A2     12141    Yellow
3 A3       256     Green
4 A4       684     Black

有没有快速的方法来完成这项工作?

非常感谢!!

林普

最佳答案

我会分两步完成。首先拆分您在 data$B 中的 ID根据您的分隔符(在本例中为 ","),然后使用这些从 BNAME 获取相关颜色名称使用 which在第二个命令中。 *apply family 在这里对迭代列中的每个元素很有用:

ids <- sapply( data$B , function(x) c( strsplit( x , "," ) ) , USE.NAMES = FALSE )
[[1]]
[1] "13131" "256"  

[[2]]
[1] "12141"

[[3]]
[1] "256"

[[4]]
[1] "684"

data$NAME <- lapply( ids , function(x) BNAME$NAME[which( BNAME$B %in% x )] )
   A         B       NAME
1 A1 13131,256 Red, Green
2 A2     12141     Yellow
3 A3       256      Green
4 A4       684      Black

关于r - 如何合并表并匹配具有多个因素的列的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211862/

相关文章:

r - 将数据从谷歌电子表格导入 R

r - 如何将 R 包快照到 Packrat?

r - R中的Stata "."相当于什么

r - 如何在 R 中制作多个 png 文件的多面板图?

r - R : no applicable method for 'st_centroid' applied to an object of class "NULL" 错误

r - 自动将 R 中的交互式图形作为 .html 文件保存到指定位置

r - 从向量中采样元素对但不重复

python - 有没有办法将数据框从 Python 返回到 R ?

r - 将天气 iframe 嵌入到 Shiny Dashboard 中

r - A/B Fisher 检验显着性的样本大小