gpt4 book ai didi

r - strsplit 变量分隔符

转载 作者:行者123 更新时间:2023-12-04 09:12:50 24 4
gpt4 key购买 nike

我有一些由“”分隔的数据字符串需要拆分成列。有没有一种简单的方法可以按每个第 n 个分隔符拆分数据。例如,x 中的第一个值告诉您 y 中的前 4 个值对应于第一次试验。 x 中的第二个值告诉您 y 中接下来的 3 个值对应于第二次试验,依此类推。

x <- c("4 3 3", "3 3 3 2 3")
y <- c("110 88 77 66 55 44 33 22 33 44 11 22 11", "44 55 66 33 22 11 22 33 44 55 66 77 88 66 77 88")

目标是这样的:

structure(list(session = 1:2, trial.1 = structure(1:2, .Label = c("110 88 77", 
"44 55 66"), class = "factor"), trial.2 = structure(c(2L, 1L), .Label = c("33 22 11",
"66 55 44"), class = "factor"), trial.3 = structure(1:2, .Label = c("22 33 44",
"23 33 44"), class = "factor"), trial.4 = structure(c(NA, 1L), .Label = "55 66", class = "factor"),
trial.5 = structure(c(NA, 1L), .Label = "77 88 66", class = "factor")), .Names = c("session",
"trial.1", "trial.2", "trial.3", "trial.4", "trial.5"), class = "data.frame", row.names = c(NA,
-2L))

理想情况下,y 的任何额外值都需要从结果数据框中删除,并且不均匀的行长度应该用 NA 填充。

最佳答案

这可能有用

dumx<-strsplit(x,' ')
dumy<-strsplit(y,' ')
dumx<-lapply(dumx,function(x)(cumsum(as.numeric(x))))
dumx<-lapply(dumx,function(x){mapply(seq,c(1,x+1)[-(length(x)+1)],x,SIMPLIFY=FALSE)})
ans<-mapply(function(x,y){lapply(x,function(w,z){z[w]},z=y)},dumx,dumy)

我会让你将结果列表转换为数据框:)

关于r - strsplit 变量分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370313/

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