在R中跨两列获取想要的值

我目前正试图找到一种方法来获得一个特定的ID作为一个新的列。

我的data.frame看起来像下面这样。

V1 V2 
A B
C A
D A
A E

我想得到的是:

V1 V2 V3 
A B B 
C A C 
D A D 
A E E 

本质上是要新建一个不是A的列 但我不知道该怎么做。

解决方案:

我们可以使用一个 ifelse

df1$V3 <- with(df1, ifelse(V1 == 'A', V2, V1))
df1
#  V1 V2 V3
#1  A  B  B
#2  C  A  C
#3  D  A  D
#4  A  E  E

或者如@markus所言

with(df1, replace(V1, V1 == "A", V2[V1 == "A"]))

或者另一种选择是用以下方法创建一个行列索引。max.col 然后根据索引提取数值

df1[cbind(seq_len(nrow(df1)), max.col(df1 != 'A'))]
#[1] "B" "C" "D" "E"

资料

df1 <- structure(list(V1 = c("A", "C", "D", "A"), V2 = c("B", "A", "A", 
"E")), class = "data.frame", row.names = c(NA, -4L))

给TA打赏
共{{data.count}}人
人已打赏
未分类

[cpp.cond]2,在N4713中。

2022-9-7 23:50:16

未分类

如何在python中用 "IN "查询sqlalchemy对象?

2022-9-7 23:50:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索