【发布时间】:2014-03-18 18:48:46
【问题描述】:
我正在尝试确定 data.frame 中变量的延迟,该变量包含多个位置,在这些位置中,相关数据在一系列“开始”和“停止”标记之间列出。
为此,我需要创建一个新列,该列在每次试验开始时从 0 开始计数,并以毫秒为单位进行计数,直到试验停止或下一次试验开始(以更容易者为准,我假设是后者。)
我有这个:
df <- data.frame(c(0, 32, 32, 32, 32, 31, 31, 29), c(0, 32, 64, 96, 128, 159, 190, 219), c("Start", NA_character_, NA_character_, "Stop", NA_character_, NA_character_, "Start", NA_character_))
colnames(df) <- c('Delta', 'TimeMs', 'Marker')
我想做这个:
df <- data.frame(c(0, 32, 32, 32, 32, 31, 31, 29), c(0, 32, 64, 96, 128, 159, 190, 119), c("Start", NA_character_, NA_character_, "Stop", NA_character_, NA_character_, "Start", NA_character_), c(0, 32, 64, 96, 128, 159, 190, 0))
colnames(df) <- c('Delta', 'TimeMs', 'Marker', 'Latency')
显然,我会创建一个新列,其中填充自动生成的 NA:
df$Latency <- NA
然后我想我会在新的 0 列中标注 Stat 位置所在的位置:
df$Latency [which(df$Marker == 'Start')] <- 0
从那里我被困住了。我以为我可以以某种方式使用 which 命令,但我的基本 R 技能使我相信这种方法过于简化,因此不正确。
提前感谢您的帮助,如果您需要澄清,请询问!
编辑:固定示例,标题
edit2:固定示例
edit3:使用真实的NA_character_
【问题讨论】:
-
在您的示例中,
df[8,]$TimeMS应该是 219(而不是 119)吗?? -
@jlhoward 是的,感谢您指出这一点!我还编辑了第二个 df 以反映 0 也应该与第二个“开始”同时发生。
标签: r dataframe multiple-conditions