我試圖找到一個妥善的方式,在R,找到重複值,並將其值加1,通過ID分組每個後續重複的值。例如:增量爲一個給每個重複的值R中
data=data.table(id=c('1','1','1','1','1','2','2','2'),value=c(95,100,101,101,101,20,35,38))
data$new_value <- ifelse(data[,data$value] == lag(data$value,1), lag(data$value,1)+1 ,data$value)
data$desired_value <- c(95,100,101,102,103,20,35,38)
產地:
id value new_value desired_value
1: 1 95 NA 95
2: 1 100 100 100
3: 1 101 101 101
4: 1 101 102 102
5: 1 101 102 103
6: 2 20 20 20
7: 2 35 35 35
8: 2 38 38 38
我試着用ifelse這樣做,但因此它只適用於以下行,並沒有任何後續的行不會遞歸工作。此外,在我的lag
功能結果value
失去的第一個值。
我已經看到了與make.names
或make.unique
字符變量的例子,但一直沒能找到一個重複數值的解決方案。
背景:我在做一個生存分析,我發現與我的數據有停止時間是一樣的,所以我需要使其唯一通過增加1(停止時間以秒爲單位)。
@akrun和@thelatemail我明白了。因此,在這裏我們使用「by」來分組,其中.N處理併成爲該組中觀察的總數。用'101'出現3次內ID'1',.N = 3,或'(0:(3-1))'。這導致'value +(0:2)',或簡單地'value + 0,value +1,value + 2'。謝謝! –