-1

我的CSV数据如下:

 code, label, value
 ABC,  len,   10
 ABC,  count, 20
 ABC,  data,  102
 ABC,  data,  212
 ABC,  data,  443
 ...
 XYZ,  len,   11
 XYZ,  count, 25
 XYZ,  data,  782
 ...

每个条目的数量data是不同的code。(这对我的问题无关紧要;我只是指出来。)

我需要分析data每个code. 这将包括计算中位数、绘制图表等。这意味着我应该将datafor each分开code并使其成为数字?

有没有比这种事情更好的方法:

 x = read.csv('dataFile.csv, header=T)
 ...
 median(as.numeric(subset(x, x$code=='ABC' & x$label=='data')$value))
 boxplot(median(as.numeric(subset(x, x$code=='ABC' & x$label=='data')$value)))
4

2 回答 2

1

我不确定我是否完全理解你问题的最终目标,你只是想要一些你能做什么的指示吗?因为有很多可能的解决方案。

当你问:我需要分析每个代码的数据条目。这将包括计算中位数、绘制图表等。这意味着我应该分离出每个代码的数据并使其成为数字?

答案是否定的,您不必严格遵守。您可以使用为您完成此任务的 R 函数,例如:

x = read.csv('dataFile.csv', header=T)

#is it numeric?
class(x$value)
# if it is already numeric you shouldn't have to convert it,
# if it strictly numeric I don't know any reason why it 
# should be read as strings but it happens.

aggregate(x,by=list(x$code),FUN="median")

boxplot(value~code,data=x)
# and you can do ?boxplot to look into its options. 
于 2013-10-30T15:27:59.867 回答
1

splitlist2env允许您将 data.frame 分开x,为code每个级别生成一个 data.frame code

list2env(split(x, x$code), envir=.GlobalEnv)

要不就

my.list <- split(x, x$code)

如果您更喜欢使用列表。

于 2013-10-30T15:25:26.283 回答