Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配来自不同列/数据帧的数据-在R中工作_R - Fatal编程技术网

匹配来自不同列/数据帧的数据-在R中工作

匹配来自不同列/数据帧的数据-在R中工作,r,R,下面是一些示例数据 Dataset A id name reasonforlogin 123 Tom work 246 Timmy work 789 Mark play Dataset B id name reasonforlogin 789 Mark work 313 Sasha inte

下面是一些示例数据

    Dataset A
    id       name      reasonforlogin
    123      Tom       work
    246      Timmy     work
    789      Mark      play

   Dataset B
   id       name      reasonforlogin
   789      Mark      work
   313      Sasha     interview
   000      Meryl     interview
   987      Dara      play
   789      Mark      play
   246      Timmy     work
两个数据集。相同的列。行数不均匀

我想说些像这样的话

1) “我要所有出现在datasetA和datasetB中的id号”

2) “我想知道一个ID每天登录多少次,比如说第2天。”

那么答案是什么呢

1) 那么一个列表

    [246, 789]
2) 因此,一个data.frame包含一个ID的“头”,然后是一个登录号的“行”

    123, 246, 789, 313, 000, 987

    0, 1, 2, 1, 1, 1

这似乎很容易,但我认为用大数据快速实现这一点并不简单。最初我计划在循环中进行循环,但我确信必须有一个术语来描述这种比较和可能已经做了类似事情的包。

您需要
哪个

1) 查找两个data.frames中的ID

common_ids <- unique(df1[which(df1$id %in% df2$id), "id"])

您需要
哪个

1) 查找两个data.frames中的ID

common_ids <- unique(df1[which(df1$id %in% df2$id), "id"])

您需要
哪个

1) 查找两个data.frames中的ID

common_ids <- unique(df1[which(df1$id %in% df2$id), "id"])

您需要
哪个

1) 查找两个data.frames中的ID

common_ids <- unique(df1[which(df1$id %in% df2$id), "id"])

您可以使用dplyr同时执行这两项操作

1. 2.
您可以使用dplyr同时执行这两项操作

1. 2.
您可以使用dplyr同时执行这两项操作

1. 2.
您可以使用dplyr同时执行这两项操作

1. 2.
如果我们将
A
作为第一个数据集,将
B
作为第二个数据集,将
id
作为字符列,以防止
000
被打印为
0
,那么我们可以

id
两个数据集通用:

intersect(A$id, B$id)
# [1] "246" "789"
第二天(
B
)登录的
id
的次数,包括那些根本没有登录的次数:

table(factor(B$id, levels = unique(c(A$id, B$id))))

# 123 246 789 313 000 987 
#   0   1   2   1   1   1 

如果我们将
A
作为第一个数据集,将
B
作为第二个数据集,将
id
作为字符列,以防止
000
被打印为
0
,那么我们可以

id
两个数据集通用:

intersect(A$id, B$id)
# [1] "246" "789"
第二天(
B
)登录的
id
的次数,包括那些根本没有登录的次数:

table(factor(B$id, levels = unique(c(A$id, B$id))))

# 123 246 789 313 000 987 
#   0   1   2   1   1   1 

如果我们将
A
作为第一个数据集,将
B
作为第二个数据集,将
id
作为字符列,以防止
000
被打印为
0
,那么我们可以

id
两个数据集通用:

intersect(A$id, B$id)
# [1] "246" "789"
第二天(
B
)登录的
id
的次数,包括那些根本没有登录的次数:

table(factor(B$id, levels = unique(c(A$id, B$id))))

# 123 246 789 313 000 987 
#   0   1   2   1   1   1 

如果我们将
A
作为第一个数据集,将
B
作为第二个数据集,将
id
作为字符列,以防止
000
被打印为
0
,那么我们可以

id
两个数据集通用:

intersect(A$id, B$id)
# [1] "246" "789"
第二天(
B
)登录的
id
的次数,包括那些根本没有登录的次数:

table(factor(B$id, levels = unique(c(A$id, B$id))))

# 123 246 789 313 000 987 
#   0   1   2   1   1   1 

分别为1和2使用
intersect
table
分别为1和2使用
intersect
table
分别为1和2使用
intersect
table
这在我尝试的过程中效果很好。非常感谢!这对我所尝试的很有效。非常感谢!这对我所尝试的很有效。非常感谢!这对我所尝试的很有效。非常感谢!我感谢您的帮助,但对于任何可能看到这一点的人来说,这提供了副本。所以如果你能以倍数结束!如果不需要重复,只需使用
unique
。请参阅编辑后的文章。我感谢您的帮助,但对于任何可能看到这篇文章的人来说,这篇文章都是重复的。所以如果你能以倍数结束!如果不需要重复,只需使用
unique
。请参阅编辑后的文章。我感谢您的帮助,但对于任何可能看到这篇文章的人来说,这篇文章都是重复的。所以如果你能以倍数结束!如果不需要重复,只需使用
unique
。请参阅编辑后的文章。我感谢您的帮助,但对于任何可能看到这篇文章的人来说,这篇文章都是重复的。所以如果你能以倍数结束!如果不需要重复,只需使用
unique
。见编辑后的文章。