我试图循环访问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