I have the following dataframe:
Data <- structure(list(ID = c(101, 102, 103, 104, 105, 106
), V1 = c(1, 3, 3, 1, 1, 1), V2 = c(1, 1,
1, 1, 1, 1), V3 = c(3, 1, 1, 1, 1, 1), V4 = c(1,
1, 1, 1, 1, 1)), row.names = c(NA, 6L), class = "data.frame")
我想要对具有变量V1、V2、V3或V4的值为3或更高的条目进行子集划分。它们可以在一个或多个变量上具有3或更高的分数,但至少需要一个。
我目前使用的方法如下:
set <- grep('V', names(Data))
Data <- Data[rowSums(Data[set] > 2) > 0, set]
我几乎得到了所需的内容,但是缺少列ID。
我想我可以创建一个名为keep的值来保存这些ID,稍后再将它们添加到数据框中,所以我尝试了一下。
keep <- Data$ID
如果使用c()
函数并命名新的列,替换的行将无法匹配,因此会出现错误。因此我尝试了以下方法:
keep <- as.data.frame(keep)
Data <- merge(Data, keep, by=c('ID')
当然,这会导致错误,因为我忘记了Data没有现有的ID列可以与之合并。
所以现在我正在寻找一种方法,在一步中保留ID或将其包含在早期子集得分为3或更高的步骤中。
Data <- Data[rowSums(Data[set] > 2) > 0, ]
- Ronak ShahData <- Data[rowSums(Data[set] > 2) > 0, c("ID", set)]
- Gregor ThomasData[which(Data[set] >= 3, arr.ind = TRUE)[,"row"],]
- d.b