我正在尝试按照以下说明制作新列。 d实际上对应于日期,V2是给定日期的事件。我需要收集给定日期的事件。 V3是单列,其行条目是串联。提前致谢。我的尝试不起作用。
df = V1 V2
d1 U
d2 M
d1 T
d1 Q
d2 P
期望得到的df
df.1 = V1 V3
d1 U,T,Q
d2 M,P
df.1 <- df %>% group_by(., V1) %>%
mutate(., V3 = c(distinct(., V2))) %>%
as.data.frame
上述代码导致以下错误;忽略15和1 - 它们特定于我的实际代码
Error: incompatible size (15), expecting 1 (the group size) or 1
答案 0 :(得分:1)
您可以像这样使用聚合:
df.1 <- aggregate(V2~V1,paste,collapse=",",data=df)
# V1 V2
# 1 d1 U,T,Q
# 2 d2 M,P
答案 1 :(得分:0)
它不允许向量作为数据帧中的元素。因此,您可以使用paste将元素连接为单个字符串,而不是使用c()。
df.1 <- df %>% group_by(V1) %>% mutate(V3 = paste(unique(V2), collapse = ",")) %>% select(V1, V3) %>% unique() %>% as.data.frame()
答案 2 :(得分:0)
仍然使用dplyr
,您可以尝试:
df %>% group_by(V1) %>% summarize(V3 = paste(unique(V2), collapse=", "))