2012-03-30 92 views
3

我讀從工作目錄csv文件用下面的代碼:創建一個新的行並添加列總結

df <- read.csv("test1.csv", header = TRUE,skip =6, nrow = 
length(count.fields("test1.csv")) - 12) 

然後改變用下面的代碼中的列名:

colnames(df) = c("type","date","v1","v2","v3","v4","v5","v6","v7","v8","v9","v10","v11","v12","v13","v14","v15","v16","v17","v18","v19","v20","v21","v22","v23","v24","total") 

我的數據集的維度是365行x 24列,我試圖計算列(3:27)的總和並在數據框的底部用總和創建一個新行。

data.frame看起來像這樣:

enter image description here

如果我嘗試了一些樣品數據的測試如下正常工作:

x <- data.frame(x1 = c(3:8, 1:2), x2 = c(4:1, 2:5),x3 = c(3:8, 1:2), x4 = c(4:1, 2:5)) 

X [9,(2:3 )] < - apply(x,2,sum)

但是當我嘗試使用我正在使用的csv文件時,我使用的代碼如下所示:

x[366,(3:27)] <- apply(df, 2, sum) 

但它給了這樣的錯誤: 「在FUN錯誤(下一頁末[,1] ...):無效的 '類型' 的說法(人物)」

誰能告訴我如何解決這個問題?

+0

如果運行STR(DF),它告訴你,最後24列是類數字或整數?它看起來像一個或多個他們是一個字符類 – nzcoops 2012-03-30 12:20:25

+0

嗨,如果我做str(df)它說最後的25 coloumns'num' – Achak 2012-03-30 13:05:57

回答

4

apply(df, 2, sum)將試圖總結所有列,如果列typedate是一個類型的,其中:R沒有sum方法,這將失敗。你可以嘗試

df[366,(3:27)] <- colSums(df[,3:27], na.rm=TRUE) 

編輯

要識別的數字列:

myNumCols <- which(unlist(lapply(df, is.numeric))) 

然後

df[(nrow(df) + 1), myNumCols] <- colSums(df[, myNumCols], na.rm=TRUE) 
+0

感謝本答案,它現在創建行366,但值說' NA「,除了最後一個顯示總和值的」Total「,你會知道如何解決這個問題嗎?謝謝 – Achak 2012-03-30 13:03:17

+0

傢伙整理出來,感謝您的幫助! :)它顯示na由於缺少數據,所以我用:df [(nrow(df)+ 1),myNumCols] < - colSums(df [,myNumCols],na.rm = T)解決!乾杯! – Achak 2012-03-30 13:20:49

+0

@Ayan,將'na.rm = TRUE'添加到'colSums' – BenBarnes 2012-03-30 13:21:53

相關問題