根据特定条件填充数据框中的列

时间:2015-09-10 05:49:05

标签: r data.table

我正在使用R和RStudio。 我有以下数据框:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我想在数据框中添加ID TIME DV GpH SIpH GTT SITT 1 0 0 1.4 7.1 1.8 3.5 1 1 0.5 1.4 7.1 1.8 3.5 1 2 2 1.4 7.1 1.8 3.5 1 3 5 1.4 7.1 1.8 3.5 2 0 0 1.5 7.5 0.7 2.5 2 1 0.5 1.5 7.5 0.7 2.5 2 2 2 1.5 7.5 0.7 2.5 2 3 5 1.5 7.5 0.7 2.5 列,以便:

1)如果pH对于每个主题TIME小于GTT,那么该ID pHGpH

2)如果TIME大于GTT且小于GTT+SITT的总和,那么pH = SIpH为该主题。

3)如果TIME大于每个主题GTT+SITT的总和,那么pH=6

我怎样才能以快速的方式在R中实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以尝试嵌套ifelse

&#34;创建&#34;数据:

data <- read.csv(head=TRUE, text = 
"ID,TIME,DV,GpH,SIpH,GTT,SITT
1,0,0,1.4,7.1,1.8,3.5
1,1,0.5,1.4,7.1,1.8,3.5
1,2,2,1.4,7.1,1.8,3.5
1,3,5,1.4,7.1,1.8,3.5
2,0,0,1.5,7.5,0.7,2.5
2,1,0.5,1.5,7.5,0.7,2.5
2,2,2,1.5,7.5,0.7,2.5
2,3,5,1.5,7.5,0.7,2.5")

添加ph

data$ph <- ifelse(
    data$TIME < data$GTT,
      data$GpH,
      ifelse (
        data$TIME > data$GTT & data$TIME < data$GTT + data$SITT,
          data$SIpH,
          6
      )
)

打印结果

data

  ID TIME  DV GpH SIpH GTT SITT  ph
1  1    0 0.0 1.4  7.1 1.8  3.5 1.4
2  1    1 0.5 1.4  7.1 1.8  3.5 1.4
3  1    2 2.0 1.4  7.1 1.8  3.5 7.1
4  1    3 5.0 1.4  7.1 1.8  3.5 7.1
5  2    0 0.0 1.5  7.5 0.7  2.5 1.5
6  2    1 0.5 1.5  7.5 0.7  2.5 7.5
7  2    2 2.0 1.5  7.5 0.7  2.5 7.5
8  2    3 5.0 1.5  7.5 0.7  2.5 7.5