如果值为true,则输出到特定数据帧

时间:2018-08-14 14:27:16

标签: r

我正在尝试翻译下面的SAS代码:

data year5 year10;
set loans; 
if ID in ("ELC", "OEC") then output year5;
else output year10;
run;

如何在R中执行此操作,以便如果一个值在一组值中,它将输出到一个dataframe,但如果不是,它将输出到另一个?

更具体地说,我正在使用三个数据帧。原始数据帧,其中包含列“ ID”。如果列“ ID”中的值为“ ELC”或“ OEC”,则原始数据帧中的那些行将被输出到新的数据帧Year5中,否则(该“ ID”列中存在另一个值) (来自原始数据框)将输出到新的数据框year10。我已经为Year5和Year10创建了空数据框。

2 个答案:

答案 0 :(得分:1)

如果您需要两个单独的数据框,则只需对数据框进行过滤(或使用子集),然后使用dplyr创建两个新的数据框。 (我猜这不是最有效的)

library(dplyr)

year5  <- filter(df, ID %in% c("ELC","OEC"))
year10 <- filter(df, !ID %in% c("ELC","OEC"))

答案 1 :(得分:0)

如果我正确理解了您的问题,则需要一份ifelse声明

set_of_values <- c("ELC", "OEC") df$output <- ifelse(df$ID %in% set_of_values, df$year5, df$year10)

这里我假设ID,year5,year10是数据框df中的列