我蘸我的腳趾到R
,我期待做一些看起來相當簡單,但我對如何着手有點失落。我讀一個CSV,看起來是這樣的:添加列分鐘,平均和最大的數據幀
translation,category,macrocategory,subcategory,1640,1641,1642,1643,1644
almonds,nuts,Flavoring/Other,,,491,,,
apples,Fruit,Fruits and Vegetables,42,,67,,,
Atlantic herring,Fish,Meat,,52,0,9,,
aurochs,Meat,Meat,game,,4,25,5,
bacon,Meat,Meat,pork,,275.87,78,92,0
barley groats,Grain,Grain,5,9,2,14,56,9
beef,Meat,Meat,Beef,,5.25,,,
我想吃點什麼是添加新列的最大,最小和平均每個食品(所以,最大,分,和平均對於每個行)。我已經處理了一些基本的清理工作,但是如何從那裏繼續工作,我有點失落。
library(dplyr)
library(tidyr)
df <- read.csv("foods.csv", sep=",", header = T)
food.clean <- data.frame(foodname=df[,1], data.matrix(df[,5:53]))
str(food.clean) # check
food.clean <- food.clean[rowSums(is.na(food.clean)) < 48, ]
summary(food.clean)
我使用matrixStats
包也嘗試過,但遇到了一個錯誤:
library(matrixStats)
food.matrix <- as.matrix(food.clean)
cbind(food.clean, mean=rowMeans(food.matrix), sd=rowSds(food.matrix), max=rowMaxs(food.matrix))
Error in rowMeans(food.matrix) : 'x' must be numeric
任何指針?謝謝!
它不工作的原因是因爲你也轉換前四列矩陣過這反過來又轉化一切字符類。只要做到'food.matrix < - as.matrix(DF [-C(1:4)])'然後一切都將正常工作。 – 2015-03-30 20:27:23
@DavidArenburg啊,謝謝你指出了! – 2015-03-31 16:15:52