我蘸我的脚趾到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