r - 对 r 中的一些特定变量值求和
问题描述
我选择了一些特定的变量来grep()
进行其他一些失败的计算。然后我创建了一个由变量名称和“+”组成的新变量,而不是值的总和。
# create a df
test <- data.frame(I60_freq_t = 1,
I60_freq_man = 1,
I60_freq_woman = 1,
I60_freq_lo65 = 1,
I60_freq_hi65 = 1,
I61_freq_t = 1,
I61_freq_man = 1,
I61_freq_woman = 1,
I61_freq_lo65 = 1,
I61_freq_hi65 = 1,
I62_freq_t = 1,
I62_freq_man = 1,
I62_freq_woman = 1,
I62_freq_lo65 = 1,
I62_freq_hi65 = 1
)
# extract variables with different end words and use " + " to concatenate
end_with_t <- grep('t$', names(test), value = T) %>% paste(collapse = '+')
end_with_man <- grep('[^a-z]man$', names(test), value = T) %>% paste(collapse = '+')
end_with_woman <- grep('woman$', names(test), value = T) %>% paste(collapse = '+')
end_with_lo65 <- grep('lo65$', names(test), value = T) %>% paste(collapse = '+')
end_with_hi65 <- grep('hi65$', names(test), value = T) %>% paste(collapse = '+')
# sum the value
test2 <- test %>% mutate(t = end_with_t,
man = end_with_man,
woman = end_with_woman,
lo65 = end_with_lo65,
hi65 = end_with_hi65)
# **** What I want is sum the value not sum the variables names *********
我的问题是:
1.如何修改我的代码以获得我想要的?
2.有更好的方法吗?
任何帮助将不胜感激!!!
解决方案
这是一个想法,map_dfc
用于遍历变量名并使用rowSums
. ends_with
是一种基于字符串结尾选择变量的方法。
library(tidyverse)
variables <- c("_t", "_man", "_woman", "_lo65", "_hi65")
test2 <- map_dfc(variables, ~test %>%
select(ends_with(.x)) %>%
rowSums()) %>%
setNames(str_remove(variables, fixed("_")))
test2
# A tibble: 1 x 5
t man woman lo65 hi65
<dbl> <dbl> <dbl> <dbl> <dbl>
1 3 3 3 3 3
推荐阅读
- postgresql - 在 Redshift 中将 varchar 列转换为整数
- intellij-idea - 当列中有一些注释时对齐列中的字段
- python - 使用递归以相反的顺序返回节点类的字符串表示形式
- android - 在 SQLite 中存储和查询纬度和对数不会产生预期的结果
- c++ - 预编译的头文件 C++ 不能重命名 pch.h
- excel - 仅格式化小写字母
- groovy - 如何在 Katalon 中使用脚本模式加密密码文本输入?
- ruby-on-rails - 在 before_save 之前触发 before_create
- javascript - 在发出进一步的 ajax 请求之前等待令牌
- android - 单击列表项时未出现Android片段