在同一行上添加两列的值以获取新值

时间:2018-03-26 22:36:29

标签: r dataframe

很抱歉提出一个非常基本的问题,但我是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),这也不起作用。

1 个答案:

答案 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)