使用for循环来子集数据并创建变量

时间:2016-08-11 00:02:28

标签: r loops

目标

我试图使用for循环做两件事:

  1. 在少数数据框中创建变量
  2. 从其他数据框的子集创建新数据框
  3. 描述

    我在美国的每个州都有个人调查数据集。我想将它们全部合并到美国的单个数据集中,但每个数据集的变量数量不等。因此,我计划为每个状态创建子集化数据帧,然后将它们绑定在一起。

    问题1:

    首先,我想在每个状态中创建一个只有状态名称为字符串的变量。一旦我将其绑定到合并的数据框中,这将有助于识别状态。以下是我想要自动化的示例:

    vermont$state <- "vermont"
    alabama$state <- "alabama"
    ...
    texas$state <- "texas"
    

    我创建了一个可以迭代的每个州的列表:

    statenames <- c("alaska", "california", "vermont", ..., "new jersey", "texas")
    

    我正在尝试使用 for循环

    执行此操作
    for (i in statenames){
        i$state <- "i"
    }
    

    问题2

    第二次,我想从每个数据集中提取一组特定的变量到新的数据帧中,然后我可以将它们绑定在一起用于单个数据帧。

    我已经从每个数据集创建了一个我想要的变量列表:

    variables <- c("population", "size", "income", ..., "education")
    

    我是编程新手,并尽力使用for循环来实现这一目标:

    for (i in statenames){
        i.sub <- i[variables]
    }
    

    当我执行两个 for循环中的每一个时,似乎什么也没发生。没有错误消息。没有变量创建。没有新的数据框创建。

    非常感谢任何帮助〜

1 个答案:

答案 0 :(得分:0)

Q1

    for(i in state.name){
    df = data.frame(state = assign(paste(i),i))
    assign(paste(i),df)  
    }

Q2

    variables <- c("population", "size", "income")


    for(i in state.name){
     df = data.frame(state = assign(paste(i),i))
     df[variables] = NA
     assign(paste(i),df)

    }