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)