我需要在我的数据中创建一个新列,如果“id”只出现一次,它将等于“tender”值,如果“id”不出现,它将等于“lot”值。我无法通过任何与NA有关的内容来完成此操作,因为数据不完整,并且其中有很多NA。我的想法是这样做,如果“id”是唯一的,则选择
df <- data.frame('id'=c(1,1,2,3,3,4),
'lot'=c(10,20,NA,40,50,NA), 'tender'=c(30,30,30,90,90,40))
我希望输出为:
data.frame('id'=c(1,1,2,3,3,4), 'lot'=c(10,20,NA,40,50,NA),
'tender'=c(30,30,30,90,90,40),'price'=c(10,20,30,40,50,40))
3条答案
按热度按时间0lvr5msh1#
根据这个条件,我们可以用
case_when
做一个群在OP的当前示例中,
coalesce
也可以工作qij5mzcb2#
我们可以这样做:
或者在
dplyr
解决方案中为:x一个一个一个一个x一个一个二个x
qojgxg4l3#
基于此描述,可以对data.table中的组大小使用if语句
我需要在我的数据中创建一个新的列,如果“id”只出现一次,它将等于“tender”值,如果它不出现,它将等于“lot”值。