-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 eachcodeを分離して数値にする必要があることを意味します。

この種のことよりもこれを行うためのより良い方法はありますか:

 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

splitの各レベルに対して1つのdata.frameを生成するたびにlist2env、data.frameを分離できます。xcodecode

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

あるいは単に

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

リストを操作したい場合。

于 2013-10-30T15:25:26.283 に答える
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 に答える