【问题标题】:Creating a new variable in a dataset in R [closed]在R中的数据集中创建一个新变量[关闭]
【发布时间】:2016-03-16 03:49:06
【问题描述】:

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

我对从这里去哪里感到困惑。有什么想法吗?

【问题讨论】:

  • 您可以先创建一个reproducible example
  • 你有什么,你想要什么?新列是否依赖于您已有的列中的值?
  • 如果州 = 加利福尼亚州、俄勒冈州、华盛顿州,则地区 = 太平洋。我将州列为一列。
  • 你的州和地区对应关系的信息是从哪里来的?
  • 举个例子会更容易。但为此,您可以同时使用 ifelse() 和 %in%。

标签: r tidyr


【解决方案1】:

执行此操作的经典方法是使用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 或同等信息。

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

    • 这解决了问题,但不能很好地扩展......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2018-10-15
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多