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