【发布时间】:2018-02-26 20:46:51
【问题描述】:
对不起,如果这是一个愚蠢的问题,我是 R 新手。 我有一个这样的数据集:
t a b
1 1 1 0
2 2 1 0
3 3 1 4
4 4 1 0
5 5 1 2
6 1 2 0
7 2 2 1
8 3 2 3
9 4 2 0
10 5 2 5
我想添加一个新列c,如果b 为零并且之前没有由a 分组的b 不为零,则该列打开,否则为零。基本上,我想根据t 索引为每个a 标记前导零。结果应如下所示:
t a b c
1 1 1 0 1
2 2 1 0 1
3 3 1 4 0
4 4 1 0 0
5 5 1 2 0
6 1 2 0 1
7 2 2 1 0
8 3 2 3 0
9 4 2 0 0
10 5 2 5 0
我试过跑步
data.c <- ifelse(nrow(subset(data, t < data$t & a == data$a & b != 0)) == 0 & data$b == 0, 1, 0)
但是如果 b 为 0,则将 c 设置为 1。我做错了什么?你会如何处理这个问题?
谢谢
可重现的例子:
t <- "time a b
1 1 1 0
2 2 1 0
3 3 1 4
4 4 1 0
5 5 1 2
6 1 2 0
7 2 2 3
8 4 2 5
9 4 2 0"
data <- read.table(text=t, header = TRUE)
data$c <- ifelse(nrow(subset(data, t < data$t & a == data$a & b != 0)) == 0 & data$b == 0, 1, 0)
【问题讨论】:
-
愿意提供一个可重现的例子吗?
-
当然,添加了一个可重现的示例。