% unite(V5:V8)%>-6ren">
gpt4 book ai didi

r - 我可以 "automate"将 V1 :V148? 的列联合起来吗

转载 作者:行者123 更新时间:2023-12-03 18:49:10 26 4
gpt4 key购买 nike

我有一个包含 148 列的数据集。我需要将它们组合成 4 组。
例如 V1,V2,V3,V4 =X1

V1 <-c(0,3)
V2 <-c(F,F)
V3 <-c (2,4)
V4 <-c(A,C)


X1

0F2A

3F4C
我知道我可以使用
```{r}
new_data_4 <-new%>%
unite(V1:V4)%>%
unite(V5:V8)%>%
unite(V9:V12)%>%
unite(V13:V16)

```
取得了巨大的成功,但我想做这个功能。我的愿望是它可以计算列数并自动完成,而无需对数字进行硬编码。我有更多的文件要处理。我环顾了 StackOverFlow,发现了很多具有特定问题的示例,这些示例与我所拥有的并不真正相符。
我试过了:
```{r}
unite_columns <-function(x){
united_cols <-tidyr::unite(x, seq_along(1, ncol(x), 4), seq_along(4, ncol(x), 4))
return(united_cols)
}
```
```{r} 
unite_columns <-function(x){
united_cols <-unite(x, seq(1, ncol(x), 4), seq(4, ncol(x), 4))
return(united_cols)
}
```
我想我可以使用类似的策略来合并字符串,但它不起作用。
任何帮助将不胜感激。 TIA

最佳答案

您可以使用 split.default将列拆分为每 4 列并使用 do.call 逐行粘贴值.

result <- data.frame(sapply(split.default(new, ceiling(seq_along(new)/4)),
function(x) do.call(paste0, x)))

# X1 X2
#1 0F2A 8A4R
#2 3F4C 9B5K
数据
new <- data.frame(V1 = c(0,3), V2 = c("F","F"), V3 = c(2,4), V4 = c("A","C"), 
V5 = c(8, 9), V6 = c("A", "B"), V7 = c(4, 5), V8 = c("R", "K"))
new

# V1 V2 V3 V4 V5 V6 V7 V8
#1 0 F 2 A 8 A 4 R
#2 3 F 4 C 9 B 5 K

关于r - 我可以 "automate"将 V1 :V148? 的列联合起来吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67250201/

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