R - 如果列值与字符向量中的任何值匹配,则返回它旁边的列 [重复]

Posted

技术标签:

【中文标题】R - 如果列值与字符向量中的任何值匹配,则返回它旁边的列 [重复]【英文标题】:R - if column value matches any value in character vector, return column beside it [duplicate] 【发布时间】:2018-06-02 12:00:16 【问题描述】:

这里是 R 的新手,甚至是编码。我在数据帧“df”中有一个字符向量“更改”,它由我知道需要来自相邻列的输入的值组成。

change <- c("Apple","Bananas","Cheese")

如果“ColumnA”中的值与“change”中的任何值匹配,我想在新列“New”中设置它,然后它给我“ColumnB”中的值,否则它返回“Column”中的值一个”。

╔══════════╦════════════╦════════════╗
║ ColumnA  ║  ColumnB   ║    New     ║
╠══════════╬════════════╬════════════╣
║ Apples   ║ ApplesNew  ║ ApplesNew  ║
║ Beer     ║ BeerNew    ║ Beer       ║
║ Bananas  ║ BananasNew ║ BananasNew ║
║ Bananas  ║ BananasNew ║ BananasNew ║
║ Cheese   ║ CheeseNew  ║ CheeseNew  ║
╚══════════╩════════════╩════════════╝

我试过了:

within(df, 
    New <- ifelse(ColumnA %in% change, ColumnB, ColumnA)

)

提前致谢。

【问题讨论】:

【参考方案1】:

试试这个:

# Your sample data
change <- c("Apples","Bananas","Cheese");
    df <- cbind.data.frame(
    ColumnA = c("Apples", "Beer", "Bananas", "Bananas", "Cheese"),
    ColumnB = c("ApplesNew", "BeerNew", "BananasNew", "BananasNew", "CheeseNew")
);

within(df,  New = ifelse(ColumnA %in% change, as.character(ColumnB), as.character(ColumnA)) )
#  ColumnA    ColumnB        New
#1  Apples  ApplesNew  ApplesNew
#2    Beer    BeerNew       Beer
#3 Bananas BananasNew BananasNew
#4 Bananas BananasNew BananasNew
#5  Cheese  CheeseNew  CheeseNew

如果您不使用as.character(...),则该列将包含因子编号。

【讨论】:

以上是关于R - 如果列值与字符向量中的任何值匹配,则返回它旁边的列 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将所有列值与 Excel 中的单个单元格进行比较

如果值与在 r 中有条件删除的值匹配,则删除行

当列表值与Pyspark数据帧中的列值的子字符串匹配时,填充新列

当行悬停并且列值与另一行匹配时显示工具提示

javascript - 在对象数组中,返回任何值与特定字符串匹配的对象

jQuery - 如果值与数组中的元素匹配,则禁用复选框