此R函数Merge()错误是否有解释



我正在尝试使用r merge函数组合两个数据。

fix.by中的错误(by.y,y(:'by'必须指定独特有效的列

我不确定这个错误是什么意思或如何解决。

到目前为止,我的代码如下:


movies <- read_csv("movies.csv")
firsts = vector(length = nrow(movies))
for (i in 1:nrow(movies)) {
  firsts[i] = movies$director[i] %>% str_split(" ", n = 2) %>% unlist %>% .[1]
}
movies$firsts = firsts
movies <- movies[-c(137, 147, 211, 312, 428, 439, 481, 555, 602, 830, 850, 1045, 1080, 1082, 1085, 1096, 1255, 1258, 1286, 1293, 1318, 1382, 1441, 1456, 1494, 1509, 1703, 1719, 1735, 1944, 1968, 1974, 1977, 2098, 2197, 2409, 2516, 2546, 2722, 2751, 2988, 3191,
3227, 3270, 3283, 3285, 3286, 3292, 3413, 3423, 3470, 3480, 3511, 3676, 3698, 3826, 3915, 3923, 3954, 4165, 4381, 4385, 4390, 4397, 4573, 4711, 4729, 4774, 4813, 4967, 4974, 5018, 5056, 5258, 5331, 5405, 5450, 5469, 5481, 4573, 5708, 5715, 5786, 5886, 5888, 5933, 5934, 6052, 6091, 6201, 6234, 6236, 6511, 6544, 6551, 6562, 6803, 4052, 4121, 4326),]
movies <- movies[-c(4521,5846),]
g <- gender_df(movies, name_col = "firsts", year_col = "year", method = c("ssa"))
merge(movies, g, by = c("firsts", "name"), all = FALSE)

我认为您正在尝试将by参数提供一个非valid值。确实,文档告诉:

默认情况下,数据帧与他们的名称合并在列上 两者都有,但列的单独规格可以由 by.x和by.y。匹配的两个数据帧中的行 提取指定的列并将其连接在一起。如果还有更多 比一场比赛,所有可能的匹配都贡献了一排。为了 "匹配"的精确含义,请参见匹配。

在您的情况下,您应尝试以下内容:

merge(x = movies,y =  g, by.x = "firsts", by.y = "name", all = FALSE)

最新更新