r语言 - 检查列中所有行的值,看它是否在列表中,返回bool值,没有for循环



我有一个名为" occupation ";值为1、2、3、5、6、7、8、9。我需要构造一个新的数据框架列,比如occuation2。如果旧列中的值属于元素2、3、6、7之一,则新列中的行值为1。否则,行值为0。在我的真实数据中,"职业"可以取90个不同的值。列。此外,我需要使用大约10个不同的值来将1分配给新列。所以我不想创建大约10个不同的条件来赋值。

我所做的是创建一个包含值的列表,根据该值我可以对新列进行二分类,例如value_list = c(2,3,6,7)。我还尽量避免使用for循环来完成任务。伪代码如下所示:

df$occupation2 <- 0 
value_list = c(2, 3, 6, 7)
df['occupation2'] <- 1 where occupation2's value isin value_list.  

df[['occupation2']] <- as.integer(df[['occupation']] %in% value_list)应该可以工作。%in%是这项工作的最佳操作员。它返回一个logical(TRUE/FALSE)向量,该向量将被as.integer()转换为1/0。

(另外,当从数据帧中提取单个列时,使用data[, column]data[[column]]直接访问该列—data[column]将给出一个1列的数据帧,而不仅仅是列)

最新更新