在R中的数据集中创建新变量

时间:2015-12-10 13:24:24

标签: r tidyr

我拥有的数据集状态,我希望将一个新的变量或列称为Region, 太平洋 - 俄勒冈州,加利福尼亚州,华盛顿 岩石山脉 - 内华达州,蒙大拿州爱达荷州,等等

我很困惑从哪里开始。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

执行此操作的经典方法是使用merge(),或者(因为您添加了tidyr标记,因此您处于“Hadleyverse”)dplyr::full_join()。假设您有一个包含状态和其他数据的数据框:

d1 <- data.frame(state=c("Alaska","Massachusetts",
                 "Massachusetts","Florida"),
                 other_stuff=1:4)

和另一个包含状态及其区域之间匹配的数据框:

d2 <- data.frame(state=c("Alaska","Massachusetts","Florida"),
                 region=c("Western","Northeast","Southeast"))

然后

library("dplyr")
d1 %>% full_join(d2,by="state")

应该做你想做的事。

但是由你决定从哪里获得d2或等效信息。

答案 1 :(得分:1)

由于您没有提供数据,我认为您的数据看起来像这样:

df <- data.frame(state = c("Alabama", "Alaska", "Arizona", "Arkansas", "California", "Oregon", "Washington"))

我想你的data.frame中有一个列(在这种情况下称为df $ state),它包含有关状态的信息。您可以创建一个名为region的新变量,如下所示:

df$region[df$state == "California" | df$state == "Oregon" ] <- "Pacific"

df