2,000件以上のサブジェクト。最初の行ごとに 'time2'の値を0に変更したいと思います。例えば、ID = 2の被験者は、この被験者の最初の行で「時間2」に対して1を有する。どのように0に変更するには、2kの科目を検討? dplyr
でdplyrを使用して最初の行group_byサブジェクトIDの変数値を変更します
ID time1 time2
1 0 0
1 0 1
1 1 5
2 0 1
2 1 3
2 3 5
3 ....
2,000件以上のサブジェクト。最初の行ごとに 'time2'の値を0に変更したいと思います。例えば、ID = 2の被験者は、この被験者の最初の行で「時間2」に対して1を有する。どのように0に変更するには、2kの科目を検討? dplyr
でdplyrを使用して最初の行group_byサブジェクトIDの変数値を変更します
ID time1 time2
1 0 0
1 0 1
1 1 5
2 0 1
2 1 3
2 3 5
3 ....
、我々は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
またはdata.table
を使用して論理状態に基づいてifelse
を使用することができ、( 'ID' でグループ化された行のインデックス(.I
)を作成し、割り当てます:=
)0に行インデックスに対応する 'time2'の要素
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
やコンパクトbase R
オプションは( 'ID' のorder
EDであると仮定して)だろう
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
またreplace
と組み合わせてdplyr
を使用することができます。
df %>%
dplyr::group_by(ID) %>%
dplyr::mutate(time2 = replace(time2, 1, 0))
# Source: local data frame [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
これは素晴らしいです! – Aramis7d