仅当满足另一列中的条件时,才能将2值列中的值更改为相反值

路卡

我在数据帧中必须更改某些字符串时遇到问题。我的df的结构如下:

df <- data.frame(Name = c("a2b", "a1a", "b2a", "a2b", "b1b", "b2a"),
                 Side = c("L", "R", "R", "L", "R", "L"))

    Name    Side
1    a2b       L
2    a1a       R
3    b2a       R
4    a2b       L
5    b1b       R
6    b2a       L

我想做的是仅在“名称”值中包含“ 2”的情况下,才将“ Side”列中的值替换为相反的值(保留值保持为“ 1”的行)。“侧面”(Side)列仅具有“ R”和“ L”作为可能的值。所以这是我想要得到的输出:

    Name    Side
1    a2b       R
2    a1a       R
3    b2a       L
4    a2b       R
5    b1b       R
6    b2a       R

我尝试了许多解决方案,但是我刚开始使用R,所以我还真的不知道“ if”语句如何工作。有办法吗?

阿克伦

我们基于“名称”列中“ 2”的出现创建一个索引(i1),使用该索引,对“侧面”进行子集设置,并使用 chartr

i1 <- grep("2", df$Name)
df$Side[i1] <- chartr("LR", "RL", df$Side[i1])
df
#   Name Side
#1  a2b    R
#2  a1a    R
#3  b2a    L
#4  a2b    R
#5  b1b    R
#6  b2a    R

或另一种选择是使用分配,levels因为“边”列为factor

levels(df$Side[i1]) <- rev(levels(df$Side[i1]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当一列中的值更改为“ ID”列中的值时,新建一个“更改”列

在pandas列中满足条件时,返回另一列的值

根据一列中的值更改组中另一列中的值

python pandas-根据另一列的内容将列中的值更改为布尔值

Pandas groupby:根据另一列中的值更改一列中的值

R:如果一列中有NA,则将一列中的值更改为基于另一列的值

如果满足条件,则用另一列中的值替换一列中的行

仅当另一列的值满足条件时才获取列的分位数

选择时,SQL基于另一列的值将一列的值更改为空白

根据循环内另一列的值将一列的值更改为nan

如果满足标准,则更改列中的值并使用另一列中的值

仅当另一列的值更改SQL Server时才自动增加该值

REDSHIFT:根据另一列中的某个值更改列中的值

R,每次在另一列中满足条件时,从数字列中的对应值和后续值中减去一个值

根据条件在数据框列中更改值,在另一列中更改值

列中的条件值以更改另一列的同一行中的值

如果在另一列中满足条件,则将列值附加到列表

将“实际年份”列更改为相对于另一列中的值的列

R数据帧:根据另一列中的值更改第一列中的值

检索满足另一列中条件组合的一列中的所有不同值(SQL)

根据另一列中的值更改聚合函数内的值?

熊猫,如果值在列中,则更改为另一列

R:将 1000 列中的 NA 更改为另一列的值

满足条件时,使列行与另一列的匹配值具有相同的值

根据另一列的值更改列的值

根据另一列的值更改相邻列的值

仅当满足另一列的条件时才填写

从另一列计算数据帧列中的值,但前提是满足第三列中的条件

MySQL:仅当另一列中的值唯一时才设置值