6

ddplyでスペースを使用することは可能ですか?

列名に多くのスペースがあるスプレッドシートのデータを使用していますが、後で元のデータと同じ列名でこのデータをエクスポートしたいので、それらの名前を保持したいと思います。200以上の列があり、make.namesを使用するともちろん適切な名前が付けられますが、元の列名は失われます。

しかし、ddplyはスペースが好きではないようですか?回避策はありますか?

lev=gl(2, 3, labels=c("low", "high"))
df=data.frame(factor=lev, "fac tor"=lev, response=1:6, check.names = FALSE)

> ddply(df, c("factor"), summarize, r.avg=mean(response))
factor r.avg
1    low     2
2   high     5

> ddply(df, c("fac tor"), summarize, r.avg=mean(response))
Error in parse(text = x) : <text>:1:5: unexpected symbol
: fac tor
4

2 に答える 2

9

列名を単一のバックティック( `)でラップすると、うまくいくようです。

ddply(df, "`fac tor`", summarize, r.avg=mean(response))

また、data.frameの大きさや各列の位置に関する事前の知識に応じて、魅力的な場合とそうでない場合がある列インデックスを使用することもできます。

ddply(df, 2, summarize, r.avg=mean(response))
于 2011-07-04T08:40:05.560 に答える
1

正規表現を使用してスペースを意味のない文字に変換し、最後に変換し直します。

lev=gl(2, 3, labels=c("low", "high"))
df=data.frame(factor=lev, "fac tor"=lev, response=1:6, check.names = FALSE)
colnames(df) <- gsub(" ","~",colnames(df))
于 2011-07-04T08:46:16.363 に答える