在R中,我有两列,如果满足条件,我希望得到总和

时间:2016-05-02 18:24:03

标签: r

我正在尝试在R中编写一个脚本,我将从另一列中获取与某个条件相对应的值的总和。 假设我有两列,fakeVector&表格中的fakeVector1"总计"

fakeVector = c('NTC.H3','NTC.F2','NTC.F22','abc123','sample1')
fakeVector1 = c('1','2','3','4','5')
total=rbind(fakeVector, fakeVector1)

我想获取fakeVector1的值,其中fakeVector =特定值。 例如,我想获取fakeVector1值,其中fakeVector =特定值,例如" NTC.H3" 我该怎么做?

3 个答案:

答案 0 :(得分:3)

我们可以尝试

sum(as.numeric(total["fakeVector1",][total["fakeVector",]=="NTC.H3"]))

答案 1 :(得分:1)

total[2,][which(total[1,] == "NTC.H3")]
#[1] "1"

v1 <- c('NTC.H3', 'NTC.F22', 'abc123')
sum(as.numeric(total[2,][which(total[1,] %in% v1)]))
#[1] 8

答案 2 :(得分:1)

如果您的数据集被组织为data.frame,并且如果您想知道另一列中每个条件的一列的总和,则可以使用快速data.table包。

# load library
  library(data.table)

# get your data 
  fakeVector = c('NTC.H3','NTC.F2','NTC.F22','abc123','sample1')
  fakeVector1 = c('1','2','3','4','5')
  total=cbind(fakeVector, fakeVector1)

  total <- as.data.table(total)
  total$fakeVector1 <- as.numeric(total$fakeVector1)

# Solution
  total[, .(mysum = sum(fakeVector1)), by=.(fakeVector)]