这个问题在这里已经有了答案:
Convert Vector to Matrix without Recycling
(2 个回答)
2年前关闭。
我在 csv 文件中有一列数字,我想定期打破该列并将它们转换为多行。例如:
虚拟输入文件:
10
25
09
04
14
100
01
10
100
04
04
01
04
预期输出(以 3 的规则间隔中断):
10 25 09
04 14 100
01 10 100
04 04 01
04
我正在尝试在 中执行此操作R 通过使用
for
循环但没有成功。我没有得到所需的输出,但在一列中也有超过 1000 万个这样的点。所以我不确定使用循环是否是一种有效的方法。我用谷歌搜索并在 stackexchange 上看到了其他类似的查询,如 split string at regular intervals和 How to split a string into substrings of a given length? .但这并没有解决我的问题。尽管如此,对此的任何帮助表示赞赏。
最佳答案
这是一个基本的 R 选项。我们可以用 NA
填充您的输入向量/列使其长度变为三的倍数。然后,为三列中的每一列生成索引系列,并创建所需的数据框。
rem <- length(input) %% 3
input <- c(input, rep(NA, ifelse(rem == 0, 0, 3 - rem)))
idx1 <- seq(1, length(input), 3)
idx2 <- seq(2, length(input), 3)
idx3 <- seq(3, length(input), 3)
df <- data.frame(v1=input[idx1], v2=input[idx2], v3=input[idx3])
关于r - 以固定间隔将一列分成多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331691/