遍历数据框,如果我获得所需的值,则将行提取到新数据框

时间:2018-06-24 09:20:11

标签: r loops dataframe

我想遍历数据框,如果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?

如何获得此?以及如何获得每种语言的计数,英语,印尼语和苏格兰语是多少?

3 个答案:

答案 0 :(得分:2)

我认为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)

希望有帮助。

答案 1 :(得分:1)

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

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

然后使用

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

table(new_df$language)

答案 2 :(得分:0)

已经列出的选项起作用了,但这是另一个选项:

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

这将使您成为一个具有过滤数据的新数据框,然后是每种语言出现次数的摘要表。

如果您希望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())