Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据代码,此dplyr组_的基本R等价物是什么?_R_Dplyr_Tapply - Fatal编程技术网

根据代码,此dplyr组_的基本R等价物是什么?

根据代码,此dplyr组_的基本R等价物是什么?,r,dplyr,tapply,R,Dplyr,Tapply,具有以下代码块: library(tidyverse) by_age2 <- gss_cat %>% filter(!is.na(age)) %>% count(age, marital) %>% group_by(age) %>% mutate(prop = n / sum(n)) 库(tidyverse) 按年龄2% 过滤器(!is.na(年龄))%>% 计数(年龄、婚姻状况)%>% 组别(年龄)%>% 变异(prop=n/和(n)) 在ba

具有以下代码块:

library(tidyverse)
by_age2 <- gss_cat %>%
  filter(!is.na(age)) %>%
  count(age, marital) %>%
  group_by(age) %>%
  mutate(prop = n / sum(n))
库(tidyverse)
按年龄2%
过滤器(!is.na(年龄))%>%
计数(年龄、婚姻状况)%>%
组别(年龄)%>%
变异(prop=n/和(n))

在base R中是否有一个简单的等效代码?
过滤器
可以替换为
gss\u cat[!is.na(gss\u cat$age),]
,但之后我遇到了麻烦。很明显,这是一项由
tapply
aggregate
完成的工作,但我一直没有找到正确的方法
by(gss_2,with(gss_2,list(年龄,婚姻)),length)
是朝着正确的方向迈出的一步,但是输出是糟糕的。

我们可以在
表上使用
比例
子集之后输出
来删除
NA
完成。案例
)并
选择

数据来自
forcats
软件包。因此,加载包并获取数据

library(forcats)
data(gss_cat)
使用上述
表格/比例

by_age2_base <- proportions(table(subset(gss_cat, complete.cases(age), 
       select = c(age, marital))), 1)
-与OP的输出进行比较

head(by_age2, 3)
# A tibble: 3 x 4
# Groups:   age [2]
    age marital           n   prop
  <int> <fct>         <int>  <dbl>
1    18 Never married    89 0.978 
2    18 Married           2 0.0220
3    19 Never married   234 0.940 

或者另一个选项是
aggregate/ave
(使用
R 4.1.0

尝试比例(表(子集(gss_cat,complete.cases(年龄),select=c(年龄,婚姻)))
head(by_age2, 3)
# A tibble: 3 x 4
# Groups:   age [2]
    age marital           n   prop
  <int> <fct>         <int>  <dbl>
1    18 Never married    89 0.978 
2    18 Married           2 0.0220
3    19 Never married   234 0.940 
by_age2_base_long <- subset(as.data.frame(by_age2_base), Freq > 0)
subset(gss_cat, complete.cases(age), select = c(age, marital)) |> 
    {\(dat) aggregate(cbind(n = age) ~ age + marital, 
      data = dat, FUN = length)}() |> 
   transform(prop = ave(n, age, FUN = \(x) x/sum(x)))