通过R中的数字列选择数据帧
这在python中很容易做到,但在R中却把我绊倒了通过R中的数字列选择数据帧,r,dataframe,R,Dataframe,这在python中很容易做到,但在R中却把我绊倒了 numeric_cols<-data_all %>% select_if(is.numeric) columns <-colnames(numeric_cols) data_all[colnames] # returns dataframe selection data_all[which(rowSums(data_all[colnames]) > 300),] 返回 <NA><NA><
numeric_cols<-data_all %>% select_if(is.numeric)
columns <-colnames(numeric_cols)
data_all[colnames] # returns dataframe selection
data_all[which(rowSums(data_all[colnames]) > 300),]
返回
<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
我该如何在R中实现这一点尝试一下:
numeric_cols <- data_all %>%
select_if(is.numeric)
num_cols <- names(numeric_cols)
data_all <- data_all %>%
select(num_cols)
data_all$row_sum <- rowSums(data_all)
data_all <- data_all %>%
filter(row_sum > 300)
numeric\u cols%
如果(为数值型),请选择
num_cols如果不知道确切的问题要求和可复制的代码,回答您的问题有点困难。
这就是你想要的吗
numeric_cols<-data_all %>% select_if(is.numeric)
columns <-colnames(numeric_cols)
data_all<-data_all[columns] # returns dataframe selection
data_all[rowSums(data_all[columns] > 300),]
numeric\u cols%select\u if(is.numeric)
列您可以将sapply
与is.numeric
一起使用,如下所示:
#分配一个数据集
数据A C D
#R> 150
#R> 2350
#R> 3700
然后,如果只需要总和大于300的行,则可以执行类似操作:
dat[rowSums(dat[sappy(dat,is.numeric)])>300,]
#R> A、B、C、D
#R> 2真2 350
#R> 3假3700
没有非数值列的解决方案是:
dat 300,]
#R> A C D
#R> 2350
#R> 3700
在本例中,使用名为data\u all
的数据帧。警告提示您使用了名为data\u wideALL
的数据帧。您是否需要data\u wideALL[rowSums(data\u wideALL[colnames])>300]
?(此处不需要哪个
)为了让我们帮助您,请提供一个。例如,要生成最小数据集,可以使用head()
、subset()
或索引。然后使用dput()
给我们一些可以立即放入R的东西。另外,请确保你知道该怎么做。有关更多信息,请访问Stack Overflow。非常感谢。
numeric_cols<-data_all %>% select_if(is.numeric)
columns <-colnames(numeric_cols)
data_all<-data_all[columns] # returns dataframe selection
data_all[rowSums(data_all[columns] > 300),]