2017-09-07 19 views
1

いくつかの関数を記述し、入力CSVファイルの最後の2つの列にのみ適用したいとします。問題は、最後の2つの列をベクトルに変換し、それらに関数を適用する方法です。入力データフレーム列をベクトルに変換する方法

myAvg <- function(anyVector){  
    average <- sum(anyVector)/length(anyVector) 
    return(average) 
} 

mySD <- function(anyVector){   
    std_Dev <- sqrt(sum((anyVector - mean(anyVector))^2/(length(anyVector) - 1))) 
    return(std_Dev) 
    } 


myRange <- function(anyVector){   
    myRange <- max(anyVector) - min(anyVector) 
    return(myRange) 
    } 

data <- read.csv("CardioGoodnessFit.csv") 
print(data) 

Here is the first couple lines of the file

+2

これは範囲 'myRange <ないテキスト –

+0

としてデータを含めてください-max(anyVector)-min(任意のベクトル) ' – zx8754

答えて

3

Mako212これはRでapply関数を使用することによって達成単純なものとすることができる示唆@とおり

avg = apply(data[,c('Income','Miles')],MARGIN=2,FUN=myAvg) 
sdev = apply(data[,c('Income','Miles')],MARGIN=2,FUN=mySD) 

機能myAvgは、データのサブセットの各列にapplyをIEDします。関心のある列は、ベクトルの列または列番号の名前を指定することによって指定できます。 Applyは、一般に、matrixまたはdata.frameタイプのオブジェクトに使用されます。 MARGINFUN列方向(MARGIN = 2)を適用するためのオプションを提供し、行方向(MARGIN=1)または両方つつ(データMARGIN=c(1,2)の各要素に)

2

あなたが例えばを使用している場合(でも関数を記述するために、またはこの場合)のベクトルに変換する必要はありませんdplyr

library(dplyr) 
# means 
data %>% summarise(avg = mean(Income)) 
data %>% summarise(avg = mean(Miles)) 

# standard deviations 
data %>% summarise(sdev = sd(Income)) 
data %>% summarise(sdev = sd(Miles)) 

# range 
data %>% summarise(range = max(Income) - min(Income)) 
data %>% summarise(range = max(Miles) - min(Miles)) 
関連する問題