根据来自R中不同大小的数据帧的多个条件匹配值

安娜

我有两个大小不同的数据框。例:

t1 <- data.frame("id"=c(1,1,1,2,2,2,4,5,5,5,6,7,8),"condition"=c(3,3,1,5,5,5,10,10,5,5,2,3,1) )
t2 <- data.frame("ind"=c(1,2,4,5,6,7,8),"test_c"=c(3,5,10,10,2,3,1), "time"=c(32,55,21,34,55,22,19))

我想根据两个条件来匹配案例:t1$id==t2$ind根据这两个条件下t1$condition==t2$test_c变量的结果在t1中创建一个附加列t2$time

预期结果:

t3 <- data.frame("id"=c(1,1,1,2,2,2,4,5,5,5,6,7,8),"condition"=c(3,3,1,5,5,5,10,10,5,5,2,3,1) , "time"=c (32,32,NA,55,55,55,21,34,NA,NA,55,22,19))

我怀疑应该使用mergematch函数,但不确定哪种方法正确。

r2evans

基数R

> out <- merge(t1, t2, by.x=c("id","condition"), by.y=c("ind","test_c"), all.x=TRUE)
> out
   id condition time
1   1         1   NA
2   1         3   32
3   1         3   32
4   2         5   55
5   2         5   55
6   2         5   55
7   4        10   21
8   5         5   NA
9   5         5   NA
10  5        10   34
11  6         2   55
12  7         3   22
13  8         1   19

dplyr

library(dplyr)
left_join(t1, t2, by = c("id" = "ind", "condition" = "test_c"))

与您的差异 t3

它们之间有一些区别。为了显示起见,我将它们并排显示,以便进行比较。

cbind(out[with(out,order(id,condition)),], t3[with(t3,order(id,condition)),])
#    id condition time id condition time
# 1   1         1   NA  1         1   NA
# 2   1         3   32  1         3   32
# 3   1         3   32  1         3   32
# 4   2         5   55  2         5   55
# 5   2         5   55  2         5   NA
# 6   2         5   55  2         5   NA
# 7   4        10   21  4        10   21
# 8   5         5   NA  5         5   NA
# 9   5         5   NA  5         5   NA
# 10  5        10   34  5        10   34
# 11  6         2   55  6         2   55
# 12  7         3   22  7         3   22
# 13  8         1   19  8         1   19

唯一的区别是与id=2,condition=5,其中中的所有字符merge都分配了相同的time=55,而您t3仅填充了它们中的第一个。我不认为这是“仅第一”的逻辑,因为还有其他重复id,condition没有引起相同的响应。我怀疑这只是示例数据中的一个错误,或者可能是merge您尚未告诉我们的后期处理:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R-根据多个条件匹配2个数据帧中的值(当查找ID的顺序是随机的时)

Fuzzywuzzy在Python中匹配来自不同数据帧的多个列

根据不同长度的多个条件替换数据帧值

R:根据条件(不同大小的数据帧),从另一个数据帧的列中为列分配值

如果在不同的数据帧大小中多个列的值相等-R

根据R中的条件乘并替换数据帧中的值

如何根据来自同一数据帧的多个列中的多个条件在数据帧中创建新列

R:折叠行并根据数据帧中的条件更改值

根据来自不同数据帧的两列条件乘以列?

如何使用R根据匹配查找数据帧替换数据帧的多个列中的因子水平

如何通过来自python中不同大小的其他数据帧中的列的值过滤数据帧?

匹配来自不同数据帧的 id 并将列值排列到 python 中的单个数据帧中

根据R中另一个数据帧中给出的条件,用NA替换数据帧中的多个值

根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

矢量化操作以根据 Python 中数据帧中的不同条件创建多个新列

R:来自2个不同长度数据帧的2个条件的和值

R根据条件从向量到数据帧列随机分配不同的值

根据多个条件用第二个数据帧中的值替换数据帧中的 NA

避免在R中嵌套for循环,在多个条件下跨多个数据帧进行匹配

在 Python/R 中两个不同大小的数据帧中进行 1 到 2 匹配

如果某些条件匹配,则将从不同数据帧中的两个值求和

使用numpy根据多个where条件更新数据帧值

通过来自不同数据帧的多个条件过滤数据帧

Pyspark - 根据来自不同数据帧的值向数据帧添加列

R:匹配数据帧中的值

合并具有不同大小和条件的R中的数据帧

根据多个条件匹配不同数据框中的行,而无需使用for循环

匹配R中大数据帧的多个条件

匹配R中不同数据帧中两个列对的值