很抱歉提出一个非常基本的问题,但我是R的新手并且真的陷入了一个相当简单的问题;我有下面的数据框(2行和7列):
Sub sup_b hdt sup_2 lbnp sup_3 hut sup_4
6 175 434 596 585 601 593 211
7 130 592 592 593 600 384 166
这些值与七个测试条件的持续时间(秒)相对应
col$names <- c(sup_b, hdt, sup_2, lbnp, sup_3, hut, sup_4)
和17行(每行用于一个研究对象 - 我只包括前两行)。
我正在尝试添加第1行col$sup_b
(175)和第1行col$hdt
(434)的值,以获得前两个条件的组合持续时间,即609秒。然后我将前两个cols(609)的值添加到下一个col$sup_2
以获得总持续时间(609 + 596),依此类推,直到最后一个条件col$sup_4
。
我已经尝试了下面的方法,这是针对主题6(第1行),它工作正常,但我想整理它并使其更容易,因为我有17个主题(行)并且被告知有一个更容易解决这个问题:
sup_b <- 175
hdt <- (sup_b + 434)
sup_2 <- (hdt + 596)
lbnp <- (sup_2 + 585)
sup_3 <- (hdt_lbnp + 601)
hut <- (sup_3 + 593)
sup_4 <- (hut + 211)
我希望能够只更改行数并从数据框中提取数据,而不是输入每个单独的时间段;例如:
line <- 1 ### the row I want which corresponds to the subject
sup_b <- df[line, 2]
hdt <-df[line, 2] + df[line, 3]
但我不断收到此警告信息:
在Ops.factor中(df [line,2],df [line,3]):'+'对因子无意义
我甚至尝试过:colSums(df[,c(2:3)])
,但收到以下警告:
colSums中的错误(df [,c(2:3)]):'x'必须是数字。
也尝试过:st$sum <- apply(df[,c(2:3)], 1, sum)
,这也不起作用。
答案 0 :(得分:0)
df1[-1] <- t(apply(df1[-1],1,cumsum))
# Sub sup_b hdt sup_2 lbnp sup_3 hut sup_4
# 1 6 175 609 1205 1790 2391 2984 3195
# 2 7 130 722 1314 1907 2507 2891 3057
数据强>
df1 <- read.table(text="Sub sup_b hdt sup_2 lbnp sup_3 hut sup_4
6 175 434 596 585 601 593 211
7 130 592 592 593 600 384 166",h=T,strin=F)