我有一个名为ehp30的the,13列对应于病人在某个时间点的问卷(11列)的答案。第一行是(带有假数据的):
Pat_TNO AssNo eSocialEvents eJobsAtHome eStandingUp eSittingDown eWalking eExercise eAppetite eSleep eHadToLieDown eUnableToDo eUnableToCope
<dbl> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
1 1234 baseline Often Often Sometimes Sometimes Sometimes Often Sometimes Often Often Often Sometimes 我想在最后修改一个名为'pain‘的新列,它是eSocialEvents和eUnableToCope之间11列的值之和。这些级别是:
"Never" "Rarely" "Sometimes" "Often" "Always" 其中有效编号为1-5,因此第一行的和应该是39。
发布于 2022-10-31 13:55:41
您可以转换为numeric,然后使用rowSums
library(dplyr)
dat %>%
mutate(across(starts_with("e"), as.numeric),
rowS = rowSums(select(., starts_with("e")))发布于 2022-10-31 14:00:38
以可复制的格式提供一些样本数据
dd <- read.table(text="Pat_TNO AssNo eSocialEvents eJobsAtHome eStandingUp eSittingDown eWalking eExercise eAppetite eSleep eHadToLieDown eUnableToDo eUnableToCope
1 1234 baseline Often Often Sometimes Sometimes Sometimes Often Sometimes Often Often Often Sometimes
2 4567 baseline Always Often Sometimes Sometimes Sometimes Often Sometimes Often Often Often Sometimes", header=TRUE)可以使用dplyr将行与给定的级别顺序相加。
levels <- c("Never", "Rarely", "Sometimes", "Often", "Always")
dd %>%
rowwise() %>%
mutate(score=sum(match(c_across(starts_with("e")), levels))) %>%
select(AssNo, score)在这里,我们使用match()查找levels向量中值的索引。如果所有列都已经是按正确顺序设置所有级别的因素,则只需对因子值使用as.numeric将它们转换为整数。
https://stackoverflow.com/questions/74264286
复制相似问题