gpt4 book ai didi

r - 将数据框中的多个列连接/粘贴在一起

转载 作者:行者123 更新时间:2023-12-04 05:44:38 25 4
gpt4 key购买 nike

我有一个数据框,其中包含多个观察值(数量和名称经常变化),具有最小值和最大值。示例:

ID O1_min O1_max O2_min O2_max O3_min O3_max
A 1 2 1 2 1 2
B 1 2 1 2 1 2
C 1 2 1 2 1 2
D 1 2 1 2 1 2

我想遍历我的数据框并为每个观察转换 _range 列中的所有 _min 和 _max 列。所以它看起来像这样:

ID O1_range O2_range O3_range
A 1:2 1:2 1:2
B 1:2 1:2 1:2
C 1:2 1:2 1:2
D 1:2 1:2 1:2

我正在使用 paste() 函数,但这并不能解决我的问题,一旦新列可以随时进入数据框并且我想要一个更自动化的代码。

最佳答案

假设列具有相同的命名约定,您可以使用purrr::map2_dfc()

准备数据

library(dplyr)
library(purrr)
library(stringr)


data <- read_delim("ID O1_min O1_max O2_min O2_max O3_min O3_max
A 1 2 1 2 1 2
B 1 2 1 2 1 2
C 1 2 1 2 1 2
D 1 2 1 2 1 2",delim = " ") %>%
mutate_all(str_trim)

回答你的问题

# concatenation
result <- map2_dfc(select(data,ends_with("min")),
select(data,ends_with("max")),
function(x,y){
str_c(x,":",y)
})


# rename columns
colnames(result) <- str_replace(colnames(result),pattern = "_.+","range")

#result
bind_cols(data[,1],result)
# A tibble: 4 x 4
ID O1range O2range O3range
<chr> <chr> <chr> <chr>
1 A 1:2 1:2 1:2
2 B 1:2 1:2 1:2
3 C 1:2 1:2 1:2
4 D 1:2 1:2 1:2

关于r - 将数据框中的多个列连接/粘贴在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277386/

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