2,000多门科目。我想按主题将每个第一行的'time2'值更改为0。例如,ID = 2主题在该主题的第一行中的“ time2”具有1。考虑到2k主题,如何将其更改为0?
ID time1 time2
1 0 0
1 0 1
1 1 5
2 0 1
2 1 3
2 3 5
3 ....
Run Code Online (Sandbox Code Playgroud)
使用dplyr,我们可以ifelse根据逻辑条件使用row_number()
df2 %>%
group_by(ID) %>%
mutate(time2 = ifelse(row_number()==1, 0, time2))
# A tibble: 6 x 3
# Groups: ID [2]
# ID time1 time2
# <int> <int> <dbl>
#1 1 0 0
#2 1 0 1
#3 1 1 5
#4 2 0 0
#5 2 1 3
#6 2 3 5
Run Code Online (Sandbox Code Playgroud)
或使用data.table,创建.I按“ ID”分组的行索引(),并将:=“ time2”中与该行索引相对应的那些元素分配()为0
library(data.table)
setDT(df2)[df2[, .I[seq_len(.N)==1] , ID]$V1, time2 := 0][]
# ID time1 time2
#1: 1 0 0
#2: 1 0 1
#3: 1 1 5
#4: 2 0 0
#5: 2 1 3
#6: 2 3 5
Run Code Online (Sandbox Code Playgroud)
或一个紧凑的base R选择是(假设已order编辑“ ID” )
df$time2[!duplicated(df$ID)] <- 0
df
# ID time1 time2
#1 1 0 0
#2 1 0 1
#3 1 1 5
#4 2 0 0
#5 2 1 3
#6 2 3 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |