我在excel中有一个表,其中有唯一的列,但有很多重复的行。重复项由“ uniqueID”列衡量,该列是存储为字符串的电子邮件。行可以具有相同的uniqueID,但其他列中的数据丢失,或者同一列中的数据不同。
我希望能够合并和合并这些重复的行,例如,如果相同的uniqueID对字符串的响应相同,则将合并并连接在一起,以免数据丢失。所有数据都是字符串。
我已经在R和dplyr中尝试了Aggregate函数,但没有成功,主要是因为我仍然不确定这两个函数如何工作。
输入:
uniqueID, favFruits, favVeggie, State, favColor
john@mail.com, NULL, carrots, CA, Green
jill@mail.com, apples, NULL, FL, NULL
john@mail.com, grapes, beets, CA, Red
jill@mail.com, cherries, beans, FL, Blue
jill@mail.com, pineapple, beans, FL, Blue
john@mail.com, grapes, beets, CA, Yellow
输出:
uniqueID, favFruits, favVeggie, State, favColor
john@mail.com, grapes, (carrots, beets), CA, (Green, Red, Yellow)
jill@mail.com, (apples, cherries, pineapple), beans, FL, Blue
注意:
在这种意义上,“ NULL”只是一个空白的excel单元格。它没有命名为NULL或其他任何东西。完整的数据集共有〜30列和〜20000行。每列中的“()”用来表示一个包含两个值的单元格,而不是在单元格内带有括号。
答案 0 :(得分:1)
我将采用Dave2e的答案,并将其更进一步并删除所有NULL,如下所示:
library(tidyverse)
input <- tibble::tribble(
~uniqueID, ~favFruits, ~favVeggie, ~State, ~favColor,
"john@mail.com", "NULL", "carrots", "CA", "Green",
"jill@mail.com", "apples", "NULL", "FL", "NULL",
"john@mail.com", "grapes", "beets", "CA", "Red",
"jill@mail.com", "cherries", "beans", "FL", "Blue",
"jill@mail.com", "pineapple", "beans", "FL", "Blue",
"john@mail.com", "grapes", "beets", "CA", "Yellow"
)
output <- input %>%
mutate_all(list(~str_replace(., "NULL", NA_character_))) %>%
group_by(uniqueID) %>%
summarise_all(list(~toString(unique(na.omit(.)))))
output
# A tibble: 2 x 5
uniqueID favFruits favVeggie State favColor
<chr> <chr> <chr> <chr> <chr>
1 jill@mail.com apples, cherries, pineapple beans FL Blue
2 john@mail.com grapes carrots, beets CA Green, Red, Yellow
答案 1 :(得分:0)
这是使用dplyr库的直接问题。关键是按uniqueID分组,然后使用Not Found
The requested URL /main was not found on this server.
将唯一字符串连接在一起。
toString