我有一个包含多列的数据集,其中一列是 react 时间列。这些 react 时间以逗号分隔,表示不同试验的 react 时间(同一参与者)。
例如:第 1 行(即:参与者 1 的数据)在“ react 时间”列下具有以下内容
reaction_times
2000,1450,1800,2200
因此,这些是参与者 1 在试验 1,2,3,4
中的 react 时间。
我现在想要创建一个新的数据集,其中这些试验的 react 时间全部形成单独的列。这样我就可以计算每次试验的平均 react 时间。
trial 1 trial 2 trial 3 trial 4
participant 1: 2000 1450 1800 2200
我尝试了 reshape2
包中的 colsplit
,但这似乎没有将我的数据分割成新的列(可能是因为我的数据都在 1 个单元格中)。
有什么建议吗?
最佳答案
我认为您正在寻找 strsplit() 函数;
a = "2000,1450,1800,2200"
strsplit(a, ",")
[[1]]
[1] "2000" "1450" "1800" "2200"
请注意,strsplit 返回一个列表,在本例中只有一个元素。这是因为 strsplit 将向量作为输入。因此,您还可以将单单元格字符的长向量放入函数中,并返回该向量的拆分列表。在更相关的示例中,如下所示:
# Create some example data
dat = data.frame(reaction_time =
apply(matrix(round(runif(100, 1, 2000)),
25, 4), 1, paste, collapse = ","),
stringsAsFactors=FALSE)
splitdat = do.call("rbind", strsplit(dat$reaction_time, ","))
splitdat = data.frame(apply(splitdat, 2, as.numeric))
names(splitdat) = paste("trial", 1:4, sep = "")
head(splitdat)
trial1 trial2 trial3 trial4
1 597 1071 1430 997
2 614 322 1242 1140
3 1522 1679 51 1120
4 225 1988 1938 1068
5 621 623 1174 55
6 1918 1828 136 1816
最后,计算每人的平均值:
apply(splitdat, 1, mean)
[1] 1187.50 361.25 963.75 1017.00 916.25 1409.50 730.00 1310.75 1133.75
[10] 851.25 914.75 881.25 889.00 1014.75 676.75 850.50 805.00 1460.00
[19] 901.00 1443.50 507.25 691.50 1090.00 833.25 669.25
关于r - 将逗号分隔的字符串转换为数字列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464312/