所以我有一个看起来像这样的数据结构
V4 V5 V6 V7 V8 V9 V10 V11 V12 id date start yellow
3 10552 180 yellow NA NA NA NA 101 20130826T155649 3 10552
4 19502 150 yellow NA NA NA NA 101 20130826T155649 12002 19502
5 28957 130 yellow 30457 160 brake 31457 170 red 101 20130826T155649 22452 28957
6 46662 160 yellow 47912 185 red NA NA 101 20130826T155649 38657 46662
7 55612 130 yellow 58362 185 red NA NA 101 20130826T155649 49112 55612
8 66567 140 yellow 69167 192 red 69267 194 crash 101 20130826T155649 59562 66567
9 86532 130 yellow 88182 163 brake 89532 173 red 101 20130826T155649 80027 86532
10 101337 130 yellow 103087 165 red 103187 167 brake 101 20130826T155649 93282 101337
所以发生的事情是我有一张非常凌乱的桌子。所以你可以看到,第一列代表第三列的时间,黄色,第四列代表第6列的时间。我试图做的是我尝试在制动和黄色之间做时差,然后创建一个新列。正如你可以看到一些行没有刹车。我只是想知道如何从中创建一个新列。
第二个问题是我试图创建两个新的崩溃列而没有制动,这意味着如果该行有"崩溃"或者没有"刹车",它会是1,所以我猜我想做一个真假的东西并用1和0表示它所以我可以把它们加起来算一算。我在想做一个for循环,但我有点卡住了。我真的很感激任何帮助
答案 0 :(得分:0)
因为你的数据框有"刹车"和"崩溃"在V9或V12中,我要做的第一件事就是创建一个包含这些事件发生时间的列,否则NA
:
dat$brake <- ifelse(dat$V9 == "brake", dat$V7, ifelse(dat$V12 == "brake", dat$V10, NA))
dat$crash <- ifelse(dat$V9 == "crash", dat$V7, ifelse(dat$V12 == "crash", dat$V10, NA))
现在你可以很容易地添加你想要的列(&#34;制动和黄色时间之间的差异&#34;或者#34;崩溃和没有刹车&#34;):
dat$yb <- dat$brake - dat$yellow
dat$cnb <- as.numeric(!is.na(dat$crash) & is.na(dat$brake))
# V4 V5 V6 V7 V8 V9 V10 V11 V12 id date start yellow brake crash yb cnb
# 1 10552 180 yellow NA NA <NA> NA NA <NA> 101 20130826T155649 3 10552 NA NA NA 0
# 2 19502 150 yellow NA NA <NA> NA NA <NA> 101 20130826T155649 12002 19502 NA NA NA 0
# 3 28957 130 yellow 30457 160 brake 31457 170 red 101 20130826T155649 22452 28957 30457 NA 1500 0
# 4 46662 160 yellow 47912 185 red NA NA <NA> 101 20130826T155649 38657 46662 NA NA NA 0
# 5 55612 130 yellow 58362 185 red NA NA <NA> 101 20130826T155649 49112 55612 NA NA NA 0
# 6 66567 140 yellow 69167 192 red 69267 194 crash 101 20130826T155649 59562 66567 NA 69267 NA 1
# 7 86532 130 yellow 88182 163 brake 89532 173 red 101 20130826T155649 80027 86532 88182 NA 1650 0
# 8 101337 130 yellow 103087 165 red 103187 167 brake 101 20130826T155649 93282 101337 103187 NA 1850 0