R:使用for循环的子集数据

时间:2018-03-26 08:32:42

标签: r loops for-loop subset

我有一个带有邻域的大数据集,但我只想要一些我有矢量字符的邻域。 我想过使用for循环对其进行子集化,请参阅下面的数据示例和代码示例。似乎我的for循环实际上是在所有邻域上循环 - 但是 - 在我的新数据集中只出现一个邻域,而不是所有邻域的子集。任何人都可以告诉我我在代码中做错了什么吗?

我受到了所有这些答案的启发: How to subset the dataframe byusing for loop and if condition in r

subset data frame in R using loop

R: loop through data frame extracting subset of data depending on date

最佳。谢谢。

示例数据

大数据集:

> head(CBS, n=5)
# A tibble: 5 x 37
                  `Wijken en buurten` `Aantal inwoners` `||Mannen` `||Vrouwen`
                                <chr>             <dbl>      <dbl>       <dbl>
1                             Alkmaar            108373      53659       54714
2                                Zuid             14315       6785        7525
3                            Kooimeer              2040        930        1105
4   Dillenburg en Stadhouderskwartier              1310        605         700
5 Staatsliedenkwartier en Landstraten              2130       1015        1110

但我只需要来自这些社区的信息:

> head(buurten_2, n=5)
     buurten_2          
[1,] "Oud-Overdie"      
[2,] "Overdie-West"     
[3,] "Overdie-Oost"     
[4,] "Oosterhout"       
[5,] "De Hoef III en IV"

这些对应于&#39; Wijken en Buurten&#39;中的变量名称。 CBS专栏。

这些是我尝试过的循环:(有些我知道它不会起作用,但我很绝望......)

for (i in 1:nrow(buurten_2)){
  if (CBS$`Wijken en buurten`[i] == buurten_2[i])
    data <- append(data, CBS[i,])
  print(buurten_2[i])
}

for (i in 1:length(buurten_2)){
  temp <- CBS[CBS$`Wijken en buurten`==buurten_2[i],]
  print(buurten_2[i])
}

for (i in 1:length(buurten_2)){
  data <- subset(CBS, CBS$`Wijken en buurten` == buurten_2[i])
  print(buurten_2[i])
}

for (buurten in 1:nrow(buurten_2)){
  CBS %>% 
    filter(CBS$`Wijken en buurten`[i] == buurten_2[buurten])
}

修改

但这给了我

# A tibble: 1 x 37
  `Wijken en buurten` `Aantal inwoners` `||Mannen` `||Vrouwen` `|||Ongehuwd` `||Gehuwd`
                <chr>             <dbl>      <dbl>       <dbl>         <dbl>      <dbl>
1      Oudorp-Centrum              1930        935         995           730        940

1 个答案:

答案 0 :(得分:0)

不!

这不是它在R.中的工作方式;)你想使用矢量化代码,因为它更简洁,更快(在R中)。这有两个解决方案:

RTRIM(LTRIM(DOCTEXT))