我想根据表格不同部分的数据在表格中创建一个新列。我的桌子是
SeqNr Length SerieNr
1 0 0
2 0 0
3 3 1
1 0 0
2 2 2
1 1 3
1 0 0
2 0 0
3 3 4
1
我有一个表格,每个角色描述一个事件。有时这些事件是序列的一部分。我已确定第二列中序列的长度。现在我想添加第三列SerieNr
,为每个系列添加一个序号。
在excel中,列SerieNr
的公式(假设这些列是A,B,C)将是:
=if(b1=0;0;max($A$1:A1)+1)
检查列Length
是否为非零。如果这是true
,那么它会在列SerieNr
中占用最大数量并添加1.
我如何在R中实现同样的目标?
答案 0 :(得分:1)
DF <- read.table(text = "SeqNr Length SerieNr
1 0 0
2 0 0
3 3 1
1 0 0
2 2 2
1 1 3
1 0 0
2 0 0
3 3 4", header = TRUE)
DF$SeqNr2 <- 0
#subset and create a sequence along the subset
DF[DF$Length != 0, "SeqNr2"] <- seq_along(DF[DF$Length != 0, "SeqNr2"])
# SeqNr Length SerieNr SeqNr2
#1 1 0 0 0
#2 2 0 0 0
#3 3 3 1 1
#4 1 0 0 0
#5 2 2 2 2
#6 1 1 3 3
#7 1 0 0 0
#8 2 0 0 0
#9 3 3 4 4
答案 1 :(得分:1)
另一种基础R
单线方法:
df$SerieNr = ifelse(df$Length, cumsum(df$Length!=0), 0)
#> df
# SeqNr Length SerieNr
#1 1 0 0
#2 2 0 0
#3 3 3 1
#4 1 0 0
#5 2 2 2
#6 1 1 3
#7 1 0 0
#8 2 0 0
#9 3 3 4
答案 2 :(得分:0)
我们可以使用library(data.table)
setDT(dfN)[Length!=0, SerialNr2:= seq_len(.N)]
NA
以上内容将填充&#34; SerialNr2&#34;中的dfN[is.na(SerialNr2), SerialNr2:= 0]
dfN
# SeqNr Length SerieNr SerialNr2
#1: 1 0 0 0
#2: 2 0 0 0
#3: 3 3 1 1
#4: 1 0 0 0
#5: 2 2 2 2
#6: 1 1 3 3
#7: 1 0 0 0
#8: 2 0 0 0
#9: 3 3 4 4
值。对于&#34;长度&#34;中的相应0值。如果需要,可以将其更改为0
{
"query": {
"match":{
"address": "100 Broadway"
}
}
}