【发布时间】:2017-03-05 03:30:46
【问题描述】:
我在 R 中有两个数据框:
Died.At <- c(22,40,72,41, ...)
Writer.At <- c(16, 18, 36, 36)
Name <- c("John Doe", "Edgar Poe", "Walt Whitman", "Jane Austen", ...)
Gender <- c("MALE", "MALE", "MALE", "FEMALE", ...)
Date.Of.Death <- c("2015-05-10", "1849-10-07", "1892-03-26","1817-07-18", ...)
Pet <- c("cat", "dog", "cat", "cat")
df1 = data.frame(Died.At, Writer.At, Name, Gender, Pet)
print(df1)
Died.At Writer.At Name Gender Pet
1 22 16 John Doe MALE cat
2 40 18 Edgar Poe MALE dog
3 72 36 Walt Whitman MALE cat
4 41 36 Jane Austen FEMALE cat
.....
在df1 中,Name 的每一行并非都是唯一的(即有几行具有相同的作者。)
第二个数据框df2,还有一个列Name,其中两位作者来自df1(例如Jane Austen)和全新的作者。这个数据框也大得多。
print(length(unique(df1$Name)))
## output 1168
print(length(unique(df2$Name)))
## output 5572
我想对df2 进行子集化,以便唯一的名称是来自df1 的名称。
我的想法是这样做:
subset_df2 = df2[df2$Name == unique(df1$Name)]
但是,我希望这里有 1168 个唯一的作者姓名:
print(length(unique(subset_df2$Name)))
## output 880
这比我预期的要少。我的错误在哪里?
【问题讨论】:
-
此语句中存在不一致“名称列中的每个值都是唯一的。但是,在 df1 中,并非每一行都是唯一的(即有几行具有相同的作者。)。”如果 df1 中的每一行都不是唯一的,并且某些行具有相同的作者,那么当 df1 由 Name 构造时,Name 是如何唯一的。同样在您的代码中,您有 First.Name 和 Second.Name 但它们没有出现在 df1 中?
-
@R.S.我编辑了以上内容---谢谢。
-
subset_df2 <- subset(df2, Name %in% df1$Name)