我知道有很多标题相似的问题,但是我无法为我的情况创建可行的解决方案。我有几个向量,结合了文本和NA值;
DATA <- data.frame("Col.A" = c("Some Text", "Some other text", "Yes", "No", "no",
NA, "No", "Yes", "yes", NA, NA, NA), "Col.B" = c(NA, NA, "Green", NA, NA, NA, NA,
"Blue", "Blue 2", NA, NA, NA))
我需要检查Col.A
是否包含“是”,“是”,“否”或“否”。如果不是,那么我想将Col.A
文本复制到Col.B
中。如果它具有这四个条件中的任何一个,我想保留Col.B
。
我可以使它与单个ifelse
语句一起使用(因此,仅满足条件之一),但是当我尝试包含多个条件时,它只是将所有文本从Col.A
复制到{ {1}}(即包括“是”和“否”条目,抹去了我想保留在Col.B
中的信息。我已经尝试过了;
Col.B
和其他链接;
DATA$Col.B <- if_else((DATA$Col.A != "Yes" | (DATA$Col.A != "yes") |
(DATA$Col.A != "No") | (DATA$Col.A != "no")) , DATA$Col.B, DATA$Col.A)
但是没有运气。任何指针表示赞赏!
答案 0 :(得分:3)
一种public class Square extends Rectangle {
public Square(double side) {
super(side, side);
this.shapeName = "Square";
this.width = this.height = side;
}
}
方法
tidyverse
在基数R中使用library(tidyverse)
DATA %>%
mutate_if(is.factor, as.character) %>%
mutate(Col.B = if_else(Col.A %in% c("Yes", "yes", "No", "no"), Col.B, Col.A))
# Col.A Col.B
#1 Some Text Some Text
#2 Some other text Some other text
#3 Yes Green
#4 No <NA>
#5 no <NA>
#6 <NA> <NA>
#7 No <NA>
#8 Yes Blue
#9 yes Blue 2
#10 <NA> <NA>
#11 <NA> <NA>
#12 <NA> <NA>
grepl
或类似于将transform(DATA, Col.B = ifelse(
grepl("([Yy]es|[Nn]o)", Col.A),
as.character(Col.B), as.character(Col.A)))
与tidyverse
一起使用的%in%
方法(感谢@DJV)
tolower
答案 1 :(得分:0)
使用基数R:您可以使用grepl
DATA = rapply(DATA,as.character,"factor",how="replace")#CHANGE FACTOR COLUMNS TO CHARACTER
transform(DATA,Col.B=ifelse(grepl("\\b(Yes|no)\\b",Col.A,ignore.case = T),Col.B,Col.A))
Col.A Col.B
1 Some Text Some Text
2 Some other text Some other text
3 Yes Green
4 No <NA>
5 no <NA>
6 <NA> <NA>
7 No <NA>
8 Yes Blue
9 yes Blue 2
10 <NA> <NA>
11 <NA> <NA>
12 <NA> <NA>
答案 2 :(得分:0)
如我的评论所述,我将#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solod grey
vncconfig -iconic &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
更改为!=
,并得到与其他答案相同的结果,并且与您的原始问题中所述相同。
==
由reprex package(v0.2.0)于2018-07-18创建。