R 如果计数未达到特定条件,如何替换列中的值

R 如果计数未达到特定条件,如何替换列中的值,r,plyr,R,Plyr,我有以下示例数据集 df1 <- c(1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2) df2 <- c(1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2) df <- data.frame(df1, df2) 我知道如何直接替换值,例如,df$df1[df$df1==2]尝试使用data.table,它更快更简单。为了你的目的,这应该可以 df1 <- c(1,1,1,1,1,1,0,0,0

我有以下示例数据集

df1 <- c(1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2)
df2 <- c(1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2)
df <- data.frame(df1, df2)

我知道如何直接替换值,例如,
df$df1[df$df1==2]尝试使用
data.table
,它更快更简单。为了你的目的,这应该可以

df1 <- c(1,1,1,1,1,1,0,0,0,0,0,0,0,2,2)
df2 <- c(1,1,1,1,1,1,0,0,0,0,0,2,2,2,2)
df <- data.frame(df1,df2)
library(data.table)
dt<- as.data.table(df)
dt[df1==2,df1:=NA]
基本R中的df1

df1[df1==names(which(table(df1) < 3))] = NA
df2[df2==names(which(table(df2) < 3))] = NA
df1[df1==名称(其中(表(df1)<3))]=NA
df2[df2==名称(其中(表(df2)<3))]=NA

如果你有
c(2,1,1,2,1,2,1,2)
?这两个基因是否应该被NA取代?@nicola我正在研究遗传学数据,其中“2”是次要等位基因的计数。所以通常“2”的计数很少(比其他类别少)。不要在data.table中使用ifelse。效率很低。
df1 <- c(1,1,1,1,1,1,0,0,0,0,0,0,0,2,2)
df2 <- c(1,1,1,1,1,1,0,0,0,0,0,2,2,1,2)
df <- data.frame(df1,df2)
library(data.table)
dt<- as.data.table(df)
dt[df1==2,df1:=ifelse(df2==1,NA,df1)]
df1[df1==names(which(table(df1) < 3))] = NA
df2[df2==names(which(table(df2) < 3))] = NA