我想在新列(即:country_count(中指定一个值,表示特定字符串在我的数据帧中出现的次数(总计(。
country = c("DE", "FR", "FR", "FR", "NL","DE")
data_frame =data.frame(country)
这将是产生的数据帧。
country = c("DE", "FR", "FR", "FR", "NL","DE")
country_count = c(2, 3, 3, 3, 1,2)
data_frame =data.frame(country,country_count)
我知道我可以简单地运行table(data_frame$country)
来获得相同的结果,但我希望将这些值放在另一列中,因为最终我想为低于特定阈值的字符串(在我的情况下是国家/地区(分配一个不同的值。
您可以使用dplyr
:
library(dplyr)
data_frame %>%
add_count(country, name="country_count")
返回
country country_count
1 DE 2
2 FR 3
3 FR 3
4 FR 3
5 NL 1
6 DE 2
您可以使用国家代码向量对table()
结果进行子集运算,然后将其强制转换为数据帧。
country = c("DE", "FR", "FR", "FR", "NL","DE")
as.data.frame(table(country)[country])
# Result
# country Freq
#1 DE 2
#2 FR 3
#3 FR 3
#4 FR 3
#5 NL 1
#6 DE 2
相当简单的选项:
dplyr::count(data_frame, country)
退货:
country n
1 DE 2
2 FR 3
3 NL 1
我们可以使用
library(data.table)
setDT(data_frame)[, country_count := .N, country]
或使用base R
data_frame$country_count <- with(data_frame, ave(seq_along(country), country, FUN = length))