2012-02-14 10 views
1

に行ヘッダ上の行を追加します(つまり、Bおよびパーセントラベル上):は、私は、次のデータフレームの行1であるものを上に余分な行を追加したいR

a<-c(1:5) 
b<-c(4,3,2,1,1) 
Percent<-c(40,30,20,10,10) 
df1<-data.frame(a,b,Percent) 

これらのデータフレームが代表質問私がやっているインタビュー分析では、どのデータフレームがどの質問に属しているのかを簡単に識別できるように(つまり、「年齢」)、行ヘッダーの上に質問ディスクリプタを含める必要があります。私はrbindを使って行を追加していますが、行ヘッダーの上にこのコマンドを使用することは可能ですか?

ありがとうございました。

答えて

4

メタデータだけの場合は、それを属性としてdata.frameに追加できます。

> attr(df1, "Question") <- "Age" 
> attributes(df1) 
$names 
[1] "a"  "b"  "Percent" 
$row.names 
[1] 1 2 3 4 5 
$class 
[1] "data.frame" 
$Question 
[1] "Age" 

あなたが 、質問はdata.frameの上に印刷したい場合は、data.frameを拡張Questionクラスを定義 とprintメソッドをオーバーライドすることができます。

class(df1) <- c("Question", class(df1)) 
print.Question <- function(x, ...) { 
    if(! is.null(attr(x, "Question"))) { 
    cat("Question:", attr(x, "Question"), "\n") 
    } 
    print.data.frame(x) 
} 
df1 

しかし、それは余計に見えます。単に列を追加するほうが簡単かもしれません。

> df1$Question <- "Age" 
> df1 
    a b Percent Question 
1 1 4  40  Age 
2 2 3  30  Age 
3 3 2  20  Age 
4 4 1  10  Age 
5 5 1  10  Age 
+0

ありがとう@Vincent Zoonekyndしかし、 "Age"は最初の行(a、b、パーセントの上)として追加でき、列ではない可能性がありますか?ありがとう。 –

+0

私は自分の答えを編集して、デフォルトで属性を表示する方法を説明しました。しかし、それはデータではなくメタデータです。たとえば、data.frameをCSVファイルに保存すると消えてしまいます。そのため、冗長であっても列を追加する方が望ましい理由です。 –

0

Rbindは本当に行くための唯一の方法ですが、すべてが原子データに切り替えます。たとえば:

cols <- c("Age", "Age", "Age") 
df1 <- rbind(cols,df1) 
str(df1) 

は間違いなくこの1にヴィンセントに同意し、それは1つのdata.frameですべてですと、私は調査データとかなり頻繁にこれを行う、私は一般的に(data.frameの各要素に対してcomment属性を設定します)、複数の操作を実行していて、妥当な値を維持したい場合にも便利ですcolnames(df1)。それは良い習慣ではないのですが、これは、プレゼンテーションのためであれば、あなたのdata.frame()を作成するとき、私は「忘れて」何列にだ、私は迅速なピークを取ることができれば、あなたはいつも、

a<-c(1:5) 
b<-c(4,3,2,1,1) 
Percent<-c(40,30,20,10,10) 
df1<-data.frame(a,b,Percent) 

comment(df1$a) <- "Q1a. This is a likert scale" 
comment(df1$b) <- "Q1b. This is another likert scale" 
comment(df1$Percent) <- "QPercent. This is some other question" 

その後check.names=Fを設定することができます:

sapply(df1, comment) 
0

私は、これはコアRの一部であった希望が、私は、列名を格納するための属性を使用して、リッカート機能はこれらの属性を読み込み、プロットするときにそれらを使用したJason Bryer's Likert packageとソリューションをハッキング。それは、その関数でのみ動作します - 関数HMiscはlabelと呼ばれますが、関数のどれもこれについて気にしません(データフレームなどを表示する関数を含む)。

私のハックhttp://reganmian.net/blog/2013/10/02/likert-graphs-in-r-embedding-metadata-for-easier-plotting/の書き方をコードにリンクしてあります。

関連する問題