我正在查看人口数据,并希望确保我有足够的观察数据来进行县级分析.因此,我想生成一个变量,该变量 for each 观测值分配具有相同值的观测值的"县"行.

我想为我的数据框("cps")中的每一行分配一个新变量("freq"),该变量表示其特定值在一个特定变量("COUNTRY")中的频率. 我用了

f <- function(x)sum(with(cps, county==x))

来生成一个函数,该函数告诉我给定的县x在数据中出现的频率. 现在我想用

cps <- mutate(cps, freq=f(county))

为每行分配其县数值在数据框中出现的次数. 但是,它会为每一行分配观测的总数.

推荐答案

你可以用dplyr::add_count()美元得到你想要的:

library(dplyr)
mpg %>% add_count(cyl, name = "freq")
# A tibble: 234 × 12
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class    freq
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>   <int>
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact    81
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact    81
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact    81
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact    81
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact    79
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact    79
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 p     compact    79
 8 audi         a4 quattro   1.8  1999     4 manual(m5) 4        18    26 p     compact    81
 9 audi         a4 quattro   1.8  1999     4 auto(l5)   4        16    25 p     compact    81
10 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact    81
# … with 224 more rows

但是,如果要使用函数,则需要在sapply()(或purrr:map_int())中将x的每个元素与每个元素进行比较:

f <- function(x) sapply(x, \(x) sum(with(mpg, cyl == x)))

您还可以将其泛化为使用任何列:

f2 <- function(x) sapply(x, \(x_i) sum(x == x_i))

mutate(mpg, freq=f2(drv))
# A tibble: 234 × 12
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class    freq
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>   <int>
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact   106
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact   106
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact   106
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact   106
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact   106
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact   106
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 p     compact   106
 8 audi         a4 quattro   1.8  1999     4 manual(m5) 4        18    26 p     compact   103
 9 audi         a4 quattro   1.8  1999     4 auto(l5)   4        16    25 p     compact   103
10 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact   103
# … with 224 more rows

R相关问答推荐

如何提高以键ID为列的表中键查找的效率?

从载体创建 pyramid

geom_raster不适用于x比例中超过2,15的值

如何删除多个.CSV文件的行

如何在R中合并两个基准点?

使用geom_segment()对y轴排序

R-更新面内部的栅格值

在组中添加值增加和减少的行

使用Facet_WRAP时更改框图中线的 colored颜色

用两种 colored颜色 填充方框图

Ggplot2中geom_tile的动态zoom

在R中使用列表(作为tibble列)进行向量化?

如何在反曲线图中更改X标签

向R中的数据帧添加一列,该列统计另一列中每个唯一值的二进制观测值的数量

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

如何将EC50值绘制在R中的剂量-react 曲线上?

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

如何在shiny 的应用程序 map 视图宣传单中可视化单点

以R表示的NaN值的IS.NA状态

Ggplot2:添加更多特定 colored颜色 的线条