我有这样的df:
id mon.1 tue.1 wed.1 mon.2 tue.2 wed.2 mon.3 tue.3 wed.3
HD82 1 0 1 1 0 1 1 0 0
HD83 0 0 0 1 1 0 1 0 1
HD84 1 1 0 1 1 0 0 1 0
每个mon/tue/wed
列包含多个星期内已经测量过的次数,但是我希望将这些列组合起来以便每天都有一个总计,以及一个看起来像这样的数据框:
id mon tue wed
e.g。我想创建一个数据框,其中列将是monday = mon.1 + mon.2 + mon.3,tuesday = tue.1 + tue.2 + tue.3 etc
任何想法我该怎么做?
感谢。
答案 0 :(得分:0)
一种方法是在.
之前提取部分。这可以通过以下功能完成:
day_extract<-function(x)
{
x<-as.character(x)
strsplit(x, ".", fixed = T)[[1]][1]
}
尝试将此功能应用于数据帧。
答案 1 :(得分:0)
您的df
目前采用wide
格式,其中每个单元格(id
列除外)代表一次测量。您可以使用tidyr
将其转换为long
格式 - 其中数据框中的每一行代表一个度量值,然后在几天内轻松汇总:
library(tidyr)
library(dplyr)
#some dummydata
df <- data.frame(a.1=c(1:10),
a.2 = c(1:10),
b.foo = c(1:10),
stringsAsFactors = FALSE)
#transform to long format
dfLong <- gather(df,"dayWeek","value") %>%
#extract day name
mutate(day = gsub("\\..*","",dayWeek)) %>%
#summarise
group_by(day) %>%
summarise(dayTotal = sum(value))