如果特定值满足 R 中的条件,则删除数据框中的列
Remove a column in dataframe if a particular value meets a condition in R
经过大量研究,我正在努力做在 R 中应该直截了当的事情。如果 particular[=28= 中的值,我试图只删除列(而不是行) ]行和特定列满足条件。例如我有一个数据框:
V1 <- c(1:2)
V2 <- c(2:3)
df1 <- data.frame(V1, V2)
V1
V2
1
2
2
3
如果 Row2/V2 小于 4,我想删除整个 V2 列。正如您在此示例中看到的,所讨论的值为 3。
在这种情况下,我将得到一个相当于:
的数据框
V1 <- c(1:2)
df1 <- data.frame(V1)
V1
1
2
请帮忙
您可能需要一个 if
子句。
df1 <- if (df1[nrow(df1), 2] < 4) {
df1[, -2, drop=FALSE]
} else {
df1
}
df1
# V1
# 1 1
# 2 2
使用列名:
n <- 'V2'
df1 <- if (df1[nrow(df1), n] < 4) {
df1[, setdiff(names(df1), n), drop=FALSE]
} else {
df1
}
df1
# V1
# 1 1
# 2 2
没有 if
子句,您可以:
df1[seq_along(df1)[ifelse(df1$V2[2] < 4, -2, -(length(df1) + 1))]]
#> V1
#> 1 1
#> 2 2
经过大量研究,我正在努力做在 R 中应该直截了当的事情。如果 particular[=28= 中的值,我试图只删除列(而不是行) ]行和特定列满足条件。例如我有一个数据框:
V1 <- c(1:2)
V2 <- c(2:3)
df1 <- data.frame(V1, V2)
V1 | V2 |
---|---|
1 | 2 |
2 | 3 |
如果 Row2/V2 小于 4,我想删除整个 V2 列。正如您在此示例中看到的,所讨论的值为 3。
在这种情况下,我将得到一个相当于:
的数据框V1 <- c(1:2)
df1 <- data.frame(V1)
V1 |
---|
1 |
2 |
请帮忙
您可能需要一个 if
子句。
df1 <- if (df1[nrow(df1), 2] < 4) {
df1[, -2, drop=FALSE]
} else {
df1
}
df1
# V1
# 1 1
# 2 2
使用列名:
n <- 'V2'
df1 <- if (df1[nrow(df1), n] < 4) {
df1[, setdiff(names(df1), n), drop=FALSE]
} else {
df1
}
df1
# V1
# 1 1
# 2 2
没有 if
子句,您可以:
df1[seq_along(df1)[ifelse(df1$V2[2] < 4, -2, -(length(df1) + 1))]]
#> V1
#> 1 1
#> 2 2