r语言 - 循环遍历数据帧,如果我得到所需的值,则将行提取到新数据帧



我想遍历数据帧,如果 merged_Df$language 等于英语、印度尼西亚语和苏格兰语,我想提取这些数据帧行并将其放入另一个新数据帧中。数据帧如下所示:

language          text
1|  english      | 11 point agenda of #PTI for upcoming Election. 1-Education 2-Healthcare 3-Tax Reform 4-Corruption Control 5-Economy 6-Employment 7-Tourism 8-Agriculture 9-Federation & Provincial Reform 10-Justice 11-Women Empowerment -- Corrupt Gang #PMLn #MQM #ANP #MMA #JUIF #JI #PPP
2|  indonesian   | @Tadaporn_K <U+0E43><U+0E0A><U+0E48> 555555555 <U+0E41><U+0E15><U+0E48><U+0E15><U+0E2D><U+0E19><U+0E19><U+0E35><U+0E49><U+0E40><U+0E1B><U+0E48><U+0E32><U+0E40><U+0E1B><U+0E32><U+0E21><U+0E32><U+0E41><U+0E23><U+0E07><U+0E21><U+0E32><U+0E01> <U+0E41><U+0E0B
3|  french       | RT @runawaymau: jviens de revoir ça dans ma tl @louehxoioi jui mort
4|  scots        | RT @soloistkji: do they live together or?
5|  spanish      | @Jetzmmt La última vez no pude porque me jui al rancho <U+2639><U+FE0F><f0><U+009F><U+0098><U+0082>

所需的新数据帧为:

language          text
1|  english      | 11 point agenda of #PTI for upcoming Election. 1-Education 2-Healthcare 3-Tax Reform 4-Corruption Control 5-Economy 6-Employment 7-Tourism 8-Agriculture 9-Federation &amp; Provincial Reform 10-Justice 11-Women Empowerment -- Corrupt Gang #PMLn #MQM #ANP #MMA #JUIF #JI #PPP
2|  indonesian   | @Tadaporn_K <U+0E43><U+0E0A><U+0E48> 555555555 <U+0E41><U+0E15><U+0E48><U+0E15><U+0E2D><U+0E19><U+0E19><U+0E35><U+0E49><U+0E40><U+0E1B><U+0E48><U+0E32><U+0E40><U+0E1B><U+0E32><U+0E21><U+0E32><U+0E41><U+0E23><U+0E07><U+0E21><U+0E32><U+0E01> <U+0E41><U+0E0B
4|  scots        | RT @soloistkji: do they live together or?

如何得到这个?以及如何获得每种语言的计数,有多少是英语,印度尼西亚语和苏格兰语?

我假设language列是文本而不是因素。在这种情况下,有很多选项,但恕我直言,最简单的方法是使用以下代码:

new_df <- merged_Df[merged_Df$language %in% c("english", "indonesian", "scots"), ]

现在对于计数,您可以使用以下简单但乏味的代码:

english_cnt <- sum(merged_Df$language == "english")
indonesian_cnt <- sum(merged_Df$language == "indonesian")
scots_cnt <- sum(merged_Df$language == "scots")

或者这个有点先进但更通用的

aggregate(x=new_df[, "language"], by=list(language = new_df$language), FUN=length)

希望有帮助。

另一种基本R方法是使用subset

new_df <- subset(merged_Df, language %in% c("english", "indonesian", "scots"))

然后计算结果中每种语言的出现次数

table(new_df$language)

已经列出的选项有效,但这是另一个选项:

library(dplyr)
new_df <- merged_Df %>% filter(language %in% c("english", "indonesian", "scots"))
counts <- new_df %>% group_by(language) %>% count()

这将为你创建一个包含筛选数据的新数据帧,然后是每种语言出现次数的汇总表。

如果您希望计数的名称与"n"不同,则可以在后面rename,也可以使用summarise

#option 1
counts <- new_df %>% group_by(language) %>% count() %>% rename(num_occur = n)
#option2
counts <- new_df %>% group_by(language) %>% summarise(num_occur = n())

最新更新