gpt4 book ai didi

r - 如何将各种长度的字符串向量放入数据框中

转载 作者:行者123 更新时间:2023-12-04 10:29:01 25 4
gpt4 key购买 nike

我有一个长向量,我想将其放入 R 中的数据框中。这是一个示例

vector<-c("1","John Doe","15%","2","Janet Doe","13%","3","Jack William Doe","10%") 

我想要一个看起来像这样的输出

    Position      Names       Percentage
1 1 John Doe 15%
2 2 Janet Doe 13%
3 3 Jack William Doe 10%

我知道解决方案将涉及 data.frame() 和可能的 strsplit() 但后者拆分具有可变长度的名称。

最佳答案

一个选项是转换为matrix,通过指定列数(ncol),转换为data.frame,然后更改使用 type.convert

的列类型
out <- as.data.frame(matrix(vector, ncol = 3, byrow = TRUE, 
dimnames = list(NULL, c("Position", "Names", "Percentage"))),
stringsAsFactors = FALSE)
out[] <- lapply(out, type.convert, as.is = TRUE)
out
# Position Names Percentage
#1 1 John Doe 15%
#2 2 Janet Doe 13%
#3 3 Jack William Doe 10%

正如@nicola 在评论中提到的,type.convert 还在最近的 R 版本中引入了 data.frame 的方法( checkin R 3.6.0)。所以,最后一行可以改成

out <- type.convert(out, as.is = TRUE)

或者另一种选择是在将“向量”折叠为单个字符串后使用 read.csv/read.table

read.csv(text= gsub("(([^,]+,){2}[^,]+),", "\\1\n",toString(vector)), 
header = FALSE, stringsAsFactors = FALSE, col.names = c("Position",
"Names", "Percentage"), strip.white = TRUE)
# Position Names Percentage
#1 1 John Doe 15%
#2 2 Janet Doe 13%
#3 3 Jack William Doe 10%

这将确保根据值相应地转换类型,而不是稍后再转换

关于r - 如何将各种长度的字符串向量放入数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826190/

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