r - 添加新字段后创建 gt 表的问题
问题描述
下面是示例数据、包和操作。第 3 部分和第 4 部分是核心问题所在
这里的目标是生成一个表,其中包含按 smb 类别和时间段的就业情况。如果我将第 3 部分和 col_order 项目排除在外,它会很好用。所以问题是我如何在第 3 部分中创建项目并创建一个没有这些字段且也不偏移表中数据的 gt 表。我尝试将“%>% select (-"empprevyear",-"emprevyearpp",-"empprevyearpct") 嵌入其中,但这仍然使事情变得混乱。另外,尝试过 col_order ( http://www.sthda.com /english/wiki/reordering-data-frame-columns-in-r)但仍然没有成功。
简而言之,如果您运行除第 3 部分之外的所有代码,它会产生所需的结果。问题是如何在添加额外的计算字段后获得相同的结果?
library(readxl)
library(dplyr)
library(data.table)
library(odbc)
library(DBI)
library(stringr)
employment <- c(1,45,125,130,165,260,600,2,46,127,132,167,265,601,50,61,110,121,170,305,55,603,66,112,123,172,310,604)
small <- c(1,1,2,2,3,4,NA,1,1,2,2,3,4,NA,1,1,2,2,3,4,NA,1,1,2,2,3,4,NA)
area <-c(001,001,001,001,001,001,001,001,001,001,001,001,001,001,003,003,003,003,003,003,003,003,003,003,003,003,003,003)
year<-c(2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020)
qtr <-c(1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2)
smbtest <- data.frame(employment,small,area,year,qtr)
smbtest$smb <-0
smbtest <- smbtest %>% mutate(smb = case_when(employment >=0 & employment <100 ~ "1",employment >=0 & employment <150 ~ "2",employment >=0 & employment <250 ~ "3", employment >=0 & employment <500 ~ "4"))
smbsummary2<-smbtest %>%
mutate(period = paste0(year,"q",qtr)) %>%
select(area,period,employment,smb) %>%
group_by(area,period,smb) %>%
summarise(employment = sum(employment), worksites = n(),
.groups = 'drop_last') %>%
mutate(employment = cumsum(employment),
worksites = cumsum(worksites))
### part 3 (outlined above)
smbsummary2<- smbsummary2%>%
group_by(area,smb)%>%
mutate(empprevyear=lag(employment),
empprevyearpp=employment-empprevyear,
empprevyearpct=((employment/empprevyear)-1),
empprevyearpct=scales::percent(empprevyearpct,accuracy = 0.01)
)
###part 4
smblonger2<-smbsummary2 %>%
ungroup() %>%
pivot_longer(cols = employment:worksites, names_to = "measure", values_to = "value") %>%
group_by(area,measure) %>%
pivot_wider(names_from = period, values_from = value)%>%gt()
解决方案
答案是我需要在第 4 部分的第一行添加一个 select 语句。
select("area","period","smb","employment","worksites")%>%
推荐阅读
- r - 如何在 Rcpp 中删除列表的 NULL 元素
- javascript - 如何使点击 div 重定向到另一个页面的锚点
- laravel - php artisan make:auth 终端命令给出空响应
- python - 循环通过json python非常慢
- javascript - 如何从firebase实时数据库中检索数据使用时间戳?
- c# - 为什么即使创建了显式运算符,我也无法将源类型转换为字符串?
- c# - 如何解析每行的第一个字符是逗号的 CSV 文件?
- python - 从目录中随机发布推特图片
- sql-server - 如何将属性添加到 SQL Server 列中的 JSON 对象
- c# - 将标签的文本绑定到列表 XAML 中的索引