簡體   English   中英

如何在R中選擇列的范圍

[英]How to choose a range of columns in R

我有一些數據,只想計算meansdvar等。 我的問題不是函數而是列,我似乎無法弄清楚如何選擇它們。

因此,第一列包括動物的名稱,第二至11列是我的數字數據。 列名是X1X10 我的數據中有很多NA

我可以很容易地為每一行計算它,但是當我將它們結合在一起時,我總會得到

參數不是數字或邏輯:返回NA

因此,例如,我嘗試使用均值和一列(+奏效)

mean(WLD1$X1, na.rm=TRUE)

對於第2至11列,我嘗試過:

mean(WLD1[,c(2:11)], na.rm=TRUE)

還嘗試了:

lapply(WLD1[,2:11], mean, na.rm=TRUE)

還嘗試了X1:X10
我想這很簡單,但我只是堅持下去。 非常感謝您的幫助。

您可能要使用套用功能。 apply函數的作用是獲取一個函數(必需的計算)並將其應用於DataFrame或矩陣的按列或按行的每個元素。 按行和按列設置由MARGIN =參數編碼,而您要進行的實際計算由FUN =編碼(顯然代表函數)。 因此,如果您想一次在預期的函數/計算中填充一行,那么您將選擇MARGIN = 1,否則將選擇MARGIN = 2(這意味着一次將一列輸入該函數)。 因為在您的情況下,您要計算第2至11列的均值,sd和var,所以將分三步進行,您是正確的,我們對所有這三個語句均具有MARGIN = 2,但FUN =會不斷變化。 下面是代碼。

Mean_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=mean)
SD_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=sd)
Var_of_2_to_11_Column <- apply(WLD1[,2:11], MARGIN=2, FUN=var)

讓我知道我在這里所說的任何事情對您來說還不清楚。 祝一切順利

您可以使用purrr軟件包。

library(purrr)
mydatabase %>% map_if(is.numeric, function(x) mean(x, na.rm = TRUE))

這將計算數據庫中所有數字列的平均值,而忽略NA值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM