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)