我正在寻找有关在R中跨列计算“是”的帮助-最好是寻找“整洁”的解决方案。
我有一个数据集df_help
,需要创建一个新变量来对对象dim_1
进行求值并计算总的匹配数,在df_help_reprex
中用{{1 }}。
是否有dplyr解决方案,还是使用dim_1
函数作为函数更好的方法?
谢谢!
apply
答案 0 :(得分:1)
我建议使用const doSignup = pipe(
generateMagicLinkToken(email),
TE.fromEither,
TE.chain(sendSignupEmail(email, redirectUri))
)
return pipe(
email,
withDb(lookupAccountByEmail),
TE.fold(
left => left.error === 'account-not-found' ? doSignup : TE.left(left)
right => TE.left({error: 'account-exits'})
),
T.map(foldReply<SignupApiResponse>(res))
)()
方法来重塑数据,然后计算匹配值的数量。这里的代码:
tidyverse
接下来是带有library(tidyverse)
#Data
df_help <- structure(list(symp_ams = c("NO", "NO", "YES", "NO", "NO", "NO",
"NO", "NO", "YES", "NO"), symp_nvd = c("YES", "NO", "NO", "NO",
"NO", "NO", "NO", "YES", "NO", "NO"), symp_pain = c("NO", "NO",
"NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO"), symp_fever = c("NO",
"NO", "NO", "NO", "YES", "NO", "YES", "NO", "NO", "YES"), vitals_gcs = c("NO",
"NO", "YES", "NO", "YES", "NO", "NO", "NO", "YES", "NO"), vitals_rr_10_24 = c("NO",
"NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "YES"), vitals_temp_38 = c("NO",
"NO", "UNK", "UNK", "YES", "NO", "NO", "NO", "NO", "YES"), vitals_hr_100 = c("YES",
"NO", "YES", "YES", "NO", "NO", "NO", "NO", "YES", "YES")), row.names = c(NA,
-10L), class = "data.frame")
#Vector for match
dim_1 <- c("symp_ams","symp_nvd","symp_pain","vitals_gcs")
函数的解决方案。我们通过处理tidyverse
重塑数据,照顾每一行。之后,我们检查条件,汇总值,最后将结果绑定到初始数据框:
id
输出:
#Reshape
df_help %>% bind_cols(df_help %>% mutate(id=1:n()) %>%
pivot_longer(cols = -id) %>%
mutate(Num=ifelse(name %in% dim_1 & value=='YES',1,0)) %>%
group_by(id) %>% summarise(Dim1=sum(Num)) %>% select(-id))
仅需提及的是,在最终输出中,第5行应该有错别字,因为 symp_ams symp_nvd symp_pain symp_fever vitals_gcs vitals_rr_10_24 vitals_temp_38 vitals_hr_100 Dim1
1 NO YES NO NO NO NO NO YES 1
2 NO NO NO NO NO NO NO NO 0
3 YES NO NO NO YES NO UNK YES 2
4 NO NO NO NO NO NO UNK YES 0
5 NO NO NO YES YES NO YES NO 1
6 NO NO NO NO NO NO NO NO 0
7 NO NO NO YES NO NO NO NO 0
8 NO YES NO NO NO NO NO NO 1
9 YES NO NO NO YES NO NO YES 2
10 NO NO NO YES NO YES YES YES 0
列定义为vitals_gcs
,并且与向量YES
相匹配。