首页 > 解决方案 > 如何将数据框中的连续值一起粘贴到新列中

问题描述

我想将数据框中的连续值粘贴到同一数据框中的新列中。

我的数据框是这样的:

X 是的
蓝色的 A234
绿色,黑色 A5
黄色 A6
蓝色,绿色,紫色 A7

我想要第三列'z',它将值粘贴到'x'中,如下所示:

X 是的 z
蓝色的 A234 蓝色的
绿色,黑色 A5 蓝色,绿色,黑色
黄色 A6 蓝色,绿色,黑色,黄色
蓝色,绿色,紫色 A7 蓝色,绿色,紫色,蓝色,绿色,黑色,黄色

标签: rfor-looptidyverse

解决方案


tidyverse中,这可以通过accumulatepaste/str_c

library(dplyr)
library(purrr)
library(stringr)
df1 %>%
    mutate(z = accumulate(x, str_c, sep=","))

-输出

#                x    y                                         z
#1              blue A234                                      blue
#2       green,black   A5                          blue,green,black
#3            yellow   A6                   blue,green,black,yellow
#4 blue,green,purple   A7 blue,green,black,yellow,blue,green,purple

或类似的选项Reducefrombase R

Reduce(function(...) paste(..., sep=","), df1$x, accumulate = TRUE)

数据

df1 <- structure(list(x = c("blue", "green,black", "yellow", "blue,green,purple"
), y = c("A234", "A5", "A6", "A7")), class = "data.frame", row.names = c(NA, 
-4L))

推荐阅读