Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据数据帧中的条件填充新列_R_Dataframe - Fatal编程技术网

R 根据数据帧中的条件填充新列

R 根据数据帧中的条件填充新列,r,dataframe,R,Dataframe,我想在我的数据框中添加一个新列,这样对于每一行,如果LOC==1,那么V等于为V1给定的值;如果LOC==2,则V等于V2的给定值。以下是一个例子: df <- LOC V1 V2 1 0.5 0.7 1 0.5 0.7 2 0.5 0.7 1 0.6 0.8 df使用矩阵索引: idx <- cbind(seq_len(nrow(dat)), dat$LOC) # row col # [,1] [,2] #[1

我想在我的数据框中添加一个新列,这样对于每一行,如果
LOC==1
,那么
V
等于为
V1
给定的值;如果
LOC==2
,则
V
等于
V2
的给定值。以下是一个例子:

df <- 
LOC   V1   V2
 1    0.5  0.7
 1    0.5  0.7
 2    0.5  0.7
 1    0.6  0.8
df使用矩阵索引:

idx <- cbind(seq_len(nrow(dat)), dat$LOC)
#      row  col
#     [,1] [,2]
#[1,]    1    1
#[2,]    2    1
#[3,]    3    2
#[4,]    4    1

dat[-1][idx]
#[1] 0.5 0.5 0.7 0.6

idx如果
LOC
仅包含1或2,则这将起作用

 df$V <- ifelse(df$LOC == 1, df$V1, df$V2)

df$V谢谢。但是,有没有更简单的方法可以将其添加到我拥有的数据框中?@daragh-
dat$V这对于两个组来说是一个很好的解决方案,但如果您有>2列,则会很快变得复杂。@latemail同意。我喜欢你的方法,使用矩阵进行子设置总是很有趣的!
 df$V <- ifelse(df$LOC == 1, df$V1, df$V2)