创建一个新列,其中包含字符串在R中的出现总数

  • 本文关键字:字符串 包含 创建 一个 新列 r
  • 更新时间 :
  • 英文 :


我想在新列(即: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))

相关内容

最新更新