我有一个带有变量的数据框,变量的编号名称为<a class="nav-link" href="@Url.Action("Index", "Customers")">Customers</a>
。我想选择一个带有'dplyr'的子集。如何选择所有变量?我不想写下每个名字:
'dtx1', 'dtx2' (...) 'dtx20'
我在这里和Google上尝试了多次搜索,但可能没有正确的词汇。
答案 0 :(得分:0)
如果您知道要从何处进行子集化,则可以使用以下方法:
DF <- dplyr::select(DF, -c(dtxN:dtxM))` #Being N and M the numbers.
如果您不知道要消除的是哪一种,但您都拥有部分相同的名称,请向@ Mateusz1981借用:
DF <- DF[,- grep("dtx",colnames))]
答案 1 :(得分:0)
假设我们有一个虚拟数据帧old_df
:
dtx1 dtx20 dtx d1tx
1 0 0 0 1
2 1 2 0 2
如果您只想保留在字符串末尾编号的列,则可以使用dplyr
:
library(dplyr)
new_df <- select(old_df, matches("[0-9]+$"))
输出:
dtx1 dtx20
1 0 0
2 1 2
它基本上与列名末尾的任何数字匹配。
答案 2 :(得分:0)
如果希望所有包含特定字符串的变量,也可以使用contains
:
new_df = old_df %>%
select(contains("dtx"))
答案 3 :(得分:0)
dplyr::num_range()
和dplyr::starts_with()
可能是一个不错的选择,具体取决于您要保留的内容。
df1 <- data.frame(foo=1,dtx1 = 2, dtx2 = 3, bar = 4, dtx3 = 5, dtx4 = 6)
df1
# foo dtx1 dtx2 bar dtx3 dtx4
# 1 1 2 3 4 5 6
library(dplyr)
select(df1, num_range("dtx",1:3))
# dtx1 dtx2 dtx3
# 1 2 3 5
select(df1, starts_with("dtx"))
# dtx1 dtx2 dtx3 dtx4
# 1 2 3 5 6
这不太安全:
select(df1, dtx1:dtx4)
# dtx1 dtx2 bar dtx3 dtx4
# 1 2 3 4 5 6