Data1是1列的数据帧,具有唯一的编号(各种主键)。
Data2是一个具有11列的数据框。最后一列是唯一数字(主键)。
我想创建一个Data2的子集,每行的唯一编号与Data1中的唯一编号相同(第11列中的主键)。我尝试使用哪个功能:
data2_new <- which(data2[,11]== data1[,1])
但这会导致错误:
Error in Ops.factor: level sets of factors are different.
请引导我
答案 0 :(得分:0)
data<-data2[data2$keys==data1$keys,]
或者,您可以只做一个left_join:
data<-dplyr::left_join(data1, data2, by="keys")
答案 1 :(得分:0)
假设您具有数据帧1(使用主键)
df1 <- data.frame(primary_key = c(1, 3, 5, 6, 8))
> df1
primary_key
1 1
2 3
3 5
4 6
5 8
和
df2 <- data.frame(
col_11 = c(0:9),
letter = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
value = c(1, 1, 3, 1, 2, 1, 3, 4, 5, 2))
> df2
col_11 letter value
1 0 A 1
2 1 A 1
3 2 A 3
4 3 A 1
5 4 A 2
6 5 B 1
7 6 B 3
8 7 B 4
9 8 B 5
10 9 B 2
您可以使用dplyr::left_join
将这些数据帧“合并”在一起。
df2 %>% # the data you want to subset
semi_join(df1, by = c("col_11" = #the name of your "sort of primary key" column in dataframe2
"primary_key")) # the name of your column in dataframe 1
col_11 letter value
1 1 A 1
2 3 A 1
3 5 B 1
4 6 B 3
5 8 B 5
如果键名相同,则可以。
df2 %>% # the data you want to subset
semi_join(df1, by = "primary_key")
semi_join
帮助子集df2。