R 条件语句:每行选择/分配一个变量

R 条件语句:每行选择/分配一个变量,r,if-statement,conditional-statements,R,If Statement,Conditional Statements,我有一个数据集,每个数据集有2个VP和350个间隔值。我正在编写一个if循环,以便在VP1的最小值与VP2的最大值重叠时进行选择 数据通常按VP排序,但我安排按最小值排序,因为这是一个时间范围 我运行了以下代码,当值与上一个项目重叠时,该代码用于分配0或1,但它没有说明上一个项目是什么(即,上一个项目是VP1还是VP2) 。。。以此类推,大约有600行 期望输出: VP xmin xmax newvariable 1 0 6 -

我有一个数据集,每个数据集有2个VP和350个间隔值。我正在编写一个if循环,以便在VP1的最小值与VP2的最大值重叠时进行选择

数据通常按VP排序,但我安排按最小值排序,因为这是一个时间范围

我运行了以下代码,当值与上一个项目重叠时,该代码用于分配0或1,但它没有说明上一个项目是什么(即,上一个项目是VP1还是VP2)

。。。以此类推,大约有600行

期望输出:

   VP    xmin  xmax  newvariable
    1       0     6           -
    2       0     2           0
    2       6     14          1
    1       14    24          1
    2       20    30          0
    1       30    36          1
    VP  xmin  xmax    talking  talk_together  quiet_together

    1       0     6       0            0            0

    2       0     2       0            0            0  

    2       2     6       1            0            0

    2       6     14      0            0            0

    1       6     14      1            0            0 

    1       14    20      0            0            0     

    2       14    24      1            1            0

    1       20    30      1            1            0

    2       24    32      0            0            1

    1       30    32      0            0            1

如果我有一个数据帧,它有另一个变量,我将其子集化,只查看变量的一部分。例如,variable=talking,赋值为1(是)或0(否)。我最初的目的是查看0并创建新变量,比如一起使用quiet_。但是,我想将这些数据帧放回一起,但在单独的数据帧中添加了列。如果我想要与上面描述的完全相同的东西,但是数据帧在一起(而不是两个单独的),我将如何为每个指定的变量指定?最后,我想基于xmin和xmax值创建两个新列,同时考虑变量中的值。新列将是talk_(对于talking变量的1值)和quiet_(对于talking变量的0值,当xmin时,您可以使用
lag
from
dplyr
与以前的
xmax
值进行比较

library(dplyr)
df %>% mutate(newvariable = as.integer(xmin >= lag(xmax)))

#  VP xmin xmax newvariable
#1  1    0    6          NA
#2  2    0    2           0
#3  2    6   14           1
#4  1   14   24           1
#5  2   20   30           0
#6  1   30   36           1
shift
数据。表

library(data.table)
setDT(df)[, newvariable := +(xmin >= shift(xmax))]

基本R备选方案包括:

df$newvariable <- as.integer(c(NA, df$xmin[-1] >= df$xmax[-nrow(df)]))
df$newvariable=df$xmax[-nrow(df)])

df$newvariable=head(df$xmax,-1))

使用
数据。表
,我们可以

library(data.table)
setDT(df)[, newvariable := as.integer(xmin >= shift(xmax))]

请添加示例数据和预期输出以更好地帮助您。数据和预期输出确实会有所帮助。这个rbloggers条目可以帮助您在使用apply()时访问帧中的其他单元格。关于您的示例数据:您能否以可以复制/粘贴到R控制台的方式呈现它?您可以将您的数据帧(或其头部,或任何内容)放入
dput()
中以获取此信息。我尝试将示例数据添加到已编辑的文章中。这有用吗?
library(data.table)
setDT(df)[, newvariable := +(xmin >= shift(xmax))]
df$newvariable <- as.integer(c(NA, df$xmin[-1] >= df$xmax[-nrow(df)]))
df$newvariable <- +c(NA, tail(df$xmin, -1) >= head(df$xmax, -1))
library(data.table)
setDT(df)[, newvariable := as.integer(xmin >= shift(xmax))]