Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 创建基于条件标记行的新列_R_Mutate - Fatal编程技术网

R 创建基于条件标记行的新列

R 创建基于条件标记行的新列,r,mutate,R,Mutate,我正在尝试过滤这个名为df structure(list(ï..ID = structure(c(2L, 1L, 4L, 6L, 3L, 7L, 5L, 8L), .Label = c("Jay ", "Jim", "Jim ", "John ", "Mike ", "Peter", "Peter ", "Tom"), class = "factor"), Target1 = structure(c(8L, 4L, 6L, 5L, 2L, 1L, 3L, 7L), .Label = c("

我正在尝试过滤这个名为
df

structure(list(ï..ID = structure(c(2L, 1L, 4L, 6L, 3L, 7L, 5L, 
8L), .Label = c("Jay ", "Jim", "Jim ", "John ", "Mike ", "Peter", 
"Peter ", "Tom"), class = "factor"), Target1 = structure(c(8L, 
4L, 6L, 5L, 2L, 1L, 3L, 7L), .Label = c("Andreas", "Cheyne", 
"Frank", "John", "Mickey", "Raj", "Sarah", "Timothy"), class = "factor"), 
    Target2 = structure(c(4L, 3L, 1L, 5L, 2L, 1L, 1L, 1L), .Label = c("", 
    "Jake", "Peter", "Timothy ", "Tommy "), class = "factor"), 
    Parter1 = structure(c(3L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", 
    "Mike ", "Timothy"), class = "factor"), Parter2 = structure(c(1L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "Peter"), class = "factor")), class = "data.frame", row.names = c(NA, 
-8L))
我正在尝试过滤数据帧,这样如果出现在这个向量
x

x=c("Raj", "Timothy")

在第2-5列中出现2次以上该行将有一个新列变量,名为
flag
,其中,如果名称出现2次以上,则flag=1;如果名称未出现2次以上,则flag=0

在基数R中,我们可以使用
apply
MARGIN=1
(按行)

还有另一种写作方式

df$flag <- as.integer(colSums(sapply(1:nrow(df), function(i) df[i, ] %in% x)) > 2)
df$flag 2)
PS-你的名字中有一些空格,我必须先跑

df[] <- lapply(df, trimws)

df[]我理解正确了吗,如果Raj和/或Timothy在该行的其他列中出现两次,或者为零,您希望新列
=1
,效果很好!1个问题:我如何在代码中添加关于我是否需要&条件的内容?比如,如果我想让它根据列表中是否有2个标记&是否有多个空空格,如“”@M76,假设您想检查每行中是否有超过1个空空格,您可以添加一个额外的
&
条件,如
df$flag 2&sum(df[I,]==“1”)
df$flag <- as.integer(colSums(sapply(1:nrow(df), function(i) df[i, ] %in% x)) > 2)
df[] <- lapply(df, trimws)