gpt4 book ai didi

r - 是否有一种动态方法可以在数据帧中未知数量(即动态数量)的列上连接值?

转载 作者:行者123 更新时间:2023-12-02 01:25:47 26 4
gpt4 key购买 nike

我有一个如下所示的大型数据框,其中有未知数量的颜色列。颜色列的数量未知,因为这些列是通过转置称为颜色的单个列生成的。

<表类=“s-表”><标题>绘画颜色1颜色2颜色3颜色...... <正文>1蓝色黄色...2绿色蓝色橙色黄色...3黄色橙色橙色...。。。。。...。。。。。...

我想将颜色连接到单个列中,如下所示:

<表类=“s-表”><标题>绘画颜色1颜色2颜色3颜色......所有颜色 <正文>1蓝色黄色...颜色(蓝色、黄色)2绿色蓝色橙色黄色...颜色(绿色、蓝色、橙色、黄色。3黄色橙色绿色...颜色(黄色、橙色、绿色)。。。。。...……。。。。。...

我希望我的代码是动态的,因此它会自动计算颜色列的数量(可以是大于 1 的任何数字),并连接每行的所有颜色列以创建 All_colors 的值。

通过循环每行中的每一列并迭代构建 All_colors 的值,我可以相对轻松地完成此操作。然而,生成的代码很笨拙,而且感觉不必要的复杂。是否有简单的代码可以用来组合名称包含“Color”的所有列的值,并且将逐行迭代数据集(也许是 dplyr 中的某些内容?)。

上面的例子是概括性的。如果您需要查看我的方法(就像我所说的,这是成功的,但我不喜欢它,因为它太复杂),请告诉我,我会概括它。

最佳答案

通过dplyr,我们可以将rowwise()c_across()toString结合使用:

library(dplyr) 

df |>
rowwise() |>
mutate(all_colours = toString(na.omit(c_across(starts_with("color"))))) |>
ungroup()

输出:

# A tibble: 3 × 5
painting color1 color2 color3 all_colours
<dbl> <chr> <chr> <chr> <chr>
1 1 red blue green red, blue, green
2 2 blue NA NA blue
3 2 green red NA green, red

数据

library(readr)

df <- read_table("painting color1 color2 color3
1 red blue green
2 blue
2 green red")

关于r - 是否有一种动态方法可以在数据帧中未知数量(即动态数量)的列上连接值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74702157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com