R 缩短代码以过滤数据
以这个代码为例:R 缩短代码以过滤数据,r,filtering,R,Filtering,以这个代码为例: quite_long_data_frame_name <- data.frame(variable.name = rnorm(50, 3, 2)) quite_long_data_frame_name$variable.name[quite_long_data_frame_name$variable.name > 2 & quite_long_data_frame_name$variable.name < 3] <- NA quite_lon
quite_long_data_frame_name <- data.frame(variable.name = rnorm(50, 3, 2))
quite_long_data_frame_name$variable.name[quite_long_data_frame_name$variable.name > 2 & quite_long_data_frame_name$variable.name < 3] <- NA
quite_long_data_frame_name 2和quite_long_data_frame_name$variable.name<3]使用subset
和该逻辑向量的求反:
subset( quite_long_data_frame_name, !(variable.name > 2 & variable.name < 3) )
子集(相当长的数据帧名称!(variable.name>2&variable.name<3))
如果您想破坏性地修改原始文件,那么只需将该值指定给原始文件即可
如果您真的想要NA的结果:
within( quite_long_data_frame_name, is.na(variable.name) <-
(variable.name > 2 & variable.name < 3) )
内部(相当长的数据帧名称,is.na(variable.name)2和variable.name<3))
如果希望此结果替换原始结果,则需要重新指定相当长的数据帧名称。在dplyr
中,我想您会这样做
quite_long_data_frame_name %>%
mutate(variable.name=ifelse(variable.name>2 & variable.name<3, NA, variable.name))
还是挺长的。如果不至少输入3次variable.name
,我不知道有什么方法可以做到这一点
为变量指定较短的名称?:)
请注意,如果您想实际进行过滤(在dplyr
sense中),则更容易
quite_long_data_frame_name %>%
filter(variablename > 2 & variablename < 3)
@richardscriven我认为您误解了注意“过滤器”意味着子集(如在缩减中)数据,至少在dplyr上下文中是这样。您真正想做的是有条件地修改一些值。请注意,这会在dplyr
意义上进行过滤,而不是像问题所建议的那样设置为NA
。True。我将在
解决方案中提出一个。Canmutate
handleis.naAFAIKmutate
需要变量。name=
但我对dplyr
非常陌生,可能是错误的。这不起作用?:mutate(is.na(variable.name)2&variable.name<3))
?写得不一样,但这并不意味着没有办法。
quite_long_data_frame_name %>%
filter(variablename > 2 & variablename < 3)
with(quite_long_data_frame_name, is.na(variable.name) <- variable.name %between% c(2, 3))