我有一个包含两列的data.frame,如下所示:
sid calibration
sid201 [['left', '37.1', '18.9', '0.0', '0.9\xb0', '0.4\xb0'], ['right', '42.2', '24.0', '0.0', '1.0\xb0', '0.6\xb0']]
sid202 [['left', '7.4', '13.6', '0.0', '0.2\xb0', '0.3\xb0'], ['right', '14.6', '15.1', '0.0', '0.3\xb0', '0.4\xb0']]
每行等等。
我遇到的问题是弄清楚如何从"校准"中提取我需要的信息。列。
我想解析"校准"使用" left"将因子分成两行和"对"是一个新因素的水平" eye",并且其他5个元素中的每一个都被分配到它自己的列 - 让我们简单地说列a:e。
答案 0 :(得分:0)
如果按照您的说法存储数据,您可以尝试以下名为df的data.frame:
# stack the data
dfStacked <- data.frame("sid"=c(df$sid, df$sid),
"calibration"=c(sapply(df$calibration, function(i) c(i[[1]])),
sapply(df$calibration, function(i) c(i[[2]]))))
# split the data vectors
calibList <- strsplit(dfStacked$calibration, split=", ")
# put the results into a data.frame, loops through variables in outer loop
# loops through observations in inner row to get variables
results <- as.data.frame(sapply(1:5,
function(element) cbind(sapply(calibList, function(row) c(row[[i]])))))
# add to dataset
dfDone <- cbind(dfStacked$sid, results)