gpt4 book ai didi

R - 将一列数据帧拆分为多列

转载 作者:行者123 更新时间:2023-12-04 22:19:15 25 4
gpt4 key购买 nike

我有一个数据框,它是包含所有状态缩写的列:

Name
AK
AL
AR
AZ
CO
CT
DC
FL

我想将此列拆分为多列,这样任何列的单元格都不超过 5 个。
Name1    Name2
AK CT
AL DC
AR FL
AZ
CO

我可以为我想做的事情创建代码,但必须有更好的方法:
states <- as.data.frame(state.abb)

new.table <- as.data.frame(states[1:5,])

i <- 6
k <- 2

repeat{
new.table[,k] <- as.data.frame(states[(i):(i+4),])
i <- i + 5
k <- k + 1
if(i>nrow(states)){
break
}
}

最佳答案

如果 NA 可以用于空白值,那么我们可以执行以下操作。假设您的数据名为 df ,我们可以首先创建一个用于拆分数据的值向量。

(x <- rep(1:ceiling(nrow(df) / 5), each = 5, length.out = nrow(df)))
# [1] 1 1 1 1 1 2 2 2

现在我们可以拆分数据,循环结果列表使每个元素长度为 5,并强制转换为数据框。列名是在此处即时创建的。之后创建它们可能更有效。
as.data.frame(lapply(split(df$Name, paste0(names(df), x)), "length<-", 5))
# Name1 Name2
# 1 AK CT
# 2 AL DC
# 3 AR FL
# 4 AZ <NA>
# 5 CO <NA>

关于R - 将一列数据帧拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620257/

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