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 - 如果列值与字符向量中的任何值匹配,则返回它旁边的列 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当列表值与Pyspark数据帧中的列值的子字符串匹配时,填充新列