我試圖循環訪問data.frame中的列,並將下一個有效值替換爲9(無效)對於data.frame中的每個唯一標識等於9。r - 在同一列中使用不同值替換data.frame列中的值(基於唯一ID)
我沒有運氣dplyr
,lapply
,我一直在努力尋找類似的問題無濟於事。
#dummy data set
id<-c(1,1,1,1,2,2,2,2)
ind<-c(9,9,9,1,9,9,9,4)
df<-data.frame(id,ind)
#unique doesn't get me what I want
#If I do (i in 1:4) it will work for the first df$id but obviously not the 2nd.
for (i in unique(length(df$id)))
{
j=df$ind!=9
df$ind[i]<-df$ind[j]
}
unique length(df)
將無法正常工作,所以我基本上只適用於df$id
值的子集,不能得到循環。我認爲這將工作,如果我能通過這一點。其他非循環解決方案也將受到讚賞。
所以,在你的榜樣,含有9中,第一行會被設置爲1而其餘的包含9的行將被設置爲4? –
是的。對於每一個唯一的'df $ id',它將取代任何值爲9的第一個值爲'df $ id',而不是9.因此,對於'df $ id == 1','df $ ind '應該都等於1,對於'df $ id == 2' ind應該都等於4. – AKP