R:使用for循环的子集数据
我有一个包含邻域的大型数据集,但我只想要这些邻域的一个子集,其中我有一个字符向量。 我考虑过使用for循环对其进行子集设置,请参见下面的数据示例和代码示例。看起来我的for循环实际上是在所有邻域上循环的——然而,在我的新数据集中,只有一个邻域出现,而不是所有邻域的子集。有人能告诉我我在密码里做错了什么吗 我被这些答案所启发: 最好的。谢谢 示例数据 大数据集:R:使用for循环的子集数据,r,loops,for-loop,subset,R,Loops,For Loop,Subset,我有一个包含邻域的大型数据集,但我只想要这些邻域的一个子集,其中我有一个字符向量。 我考虑过使用for循环对其进行子集设置,请参见下面的数据示例和代码示例。看起来我的for循环实际上是在所有邻域上循环的——然而,在我的新数据集中,只有一个邻域出现,而不是所有邻域的子集。有人能告诉我我在密码里做错了什么吗 我被这些答案所启发: 最好的。谢谢 示例数据 大数据集: > head(CBS, n=5) # A tibble: 5 x 37 `Wijken
> 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
这些对应于CBS的“Wijken en Buurten”列中的变量名
这些是我尝试过的循环:(有些循环我知道它不起作用,但我绝望了…)
for(i in 1:nrow(buurten_2)){
如果(CBS$`Wijken en buurten`[i]==buurten_2[i])
数据否!
这不是R中的工作方式;)您希望使用矢量化代码,因为它更简洁、更快(在R中)。以下是两种解决方案:
df = subset(CBS, `Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"))
df = CBS[CBS$`Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"),]
为什么要使用循环?为什么不使用CBS[CBS$`Wijken en buurten`%in%buurten_2,]
?@davidernburg我使用了一个循环,因为我认为我需要一个循环。显然我不需要,因为这是可行的!你能解释一下%的作用吗?它基本上检查CBS$`Wijken en buurten`中的每个值,如果它能与buurten\u 2
中的任何值匹配,并返回一个布尔向量。一般来说,你很少会这样做需要借助R.Aha中的循环…我仍在发展我的编码技能,这证明了这一点!感谢您的解释!:)@DavidArenburg@DavidArenburg您将问题标记为重复问题,这是否常见,以便我现在删除我的问题?
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
df = subset(CBS, `Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"))
df = CBS[CBS$`Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"),]