我有一个 Dataframe 如下:
data <- data.table (x= c(1,2,3,4,5), y= c(7,6,8,9,10), z= c('a','b','c','d','e'), w=c(01.05, 03.04, 11.08, 05.07, 09.18))
我需要创建一个包含值的新列,如下所述:每当x等于3或5,或y等于7时,创建一个新的列M,将w中相应行的值插入到列M中,并将其他行留空。数据应如下所示:
data <- data.table (x= c(1,2,3,4,5), y= c(7, 6,8,9,10), z= c('a','b','c','d','e'), w=c(01.05, 03.04, 11.08, 05.07, 09,18), M=c(01.05, NA, 11.08, NA, 09.18)
我是一个初学者在R和搜索了很多,但没有找到一个解决方案。我尝试使用case_when和应用函数,但没有运气。我将非常感谢,如果有人可以帮助我这一点。
1条答案
按热度按时间qmb5sa221#
当你使用
data.table
时,这是给:=
赋一个新变量的方法。你可以使用ifelse
或更好的fifelse
(以确保M
与w
是同一个类)来检查你的条件,使用%in%
和|
。Edit:r2evans的方法在下面的注解中,这个答案做了同样的事情,但更优雅:
data[x %in% c(3,5) | y == 7, M := w]