Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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(dplyr)-观察太多?_R_Merge_Dplyr_Left Join - Fatal编程技术网

左加入R(dplyr)-观察太多?

左加入R(dplyr)-观察太多?,r,merge,dplyr,left-join,R,Merge,Dplyr,Left Join,我使用dplyrs left join函数来匹配两个数据帧 我有一个面板数据集a,由4708行和2列ID和名称组成: ID Name 1 Option1 1 Option2 1 Option3 2 Option2 2 Option3 3 Option1 3 Option4 My dataset B由每个名称列(86行)的单个定义和类别组成: 因此,最后我需要以下数据集C,它将B的列链接到A: ID Name Definition Category 1 Option

我使用dplyrs left join函数来匹配两个数据帧

我有一个面板数据集a,由4708行和2列ID和名称组成:

ID Name
1  Option1
1  Option2
1  Option3
2  Option2
2  Option3
3  Option1
3  Option4
My dataset B由每个名称列(86行)的单个定义和类别组成:

因此,最后我需要以下数据集C,它将B的列链接到A:

ID Name      Definition   Category
1  Option1   Def1         1
1  Option2   Def2         1
1  Option3   Def2         2
2  Option2   Def2         1
2  Option3   Def2         2
3  Option1   Def1         1
3  Option4   Def3         2
我在dplyr中使用了left_join命令:

Data C <- left_join(A,B, by="name")
Data C与
left\u-join(A,B)
如果
B
中有多行,且键列(默认名称列)与
A
中的同一行匹配,则将添加新行。例如:

library(dplyr)
df1 <- data.frame(col1 = LETTERS[1:4],
                  col2 = 1:4)
df2 <- data.frame(col1 = rep(LETTERS[1:2], 2),
                  col3 = 4:1)

left_join(df1, df2)  # has 6 rows rather than 4
库(dplyr)

df1如果不查看原始数据,很难知道,但是如果数据帧B在连接列上不包含唯一的值,则无论何时发生这种情况,都会从数据帧A中获得重复的行。你可以试试:

data_frame_b %>% count(join_col_1, join_col_2)

这将让您知道这两个变量是否存在非唯一的组合

如果加入的A和B的名称中都有NA值,则可能会出现更多行。因此,请确保排除这些因素。

可能相关。听起来像是多重匹配,所以
B
有多个条目指向
A$name
data_frame_b %>% count(join_col_1, join_col_2)