0

R を使用して、列の値を行の名前に変換する必要があります。

たとえば、format1 を format2 に変換するには

var<-c("Id", "Name", "Score", "Id", "Score", "Id", "Name")
num<-c(1, "Tom", 4, 2, 7, 3, "Jim")
format1<-data.frame(var, num)

format1

    var num
1    Id   1
2  Name Tom
3 Score   4
4    Id   2
5 Score   7
6    Id   3
7  Name Jim

注意してください、format1 には欠損値があり、それが課題だと思います。

Id<-c(1, 2, 3)
Name<-c("Tom", NA, "Jim")
Score<-c(4, 7, NA)
format2<-data.frame(Id, Name, Score)

format2

  Id Name Score
1  1  Tom     4
2  2 <NA>     7
3  3  Jim    NA

# How to convert format1 into format2?

正確には説明できないかもしれませんが、上記のおもちゃのデータを参照してください。

reshape と reshape2 については少し知っていますが、両方を使用してデータ形式を変換できませんでした。

4

2 に答える 2

2

dcast識別子列を追加してから使用できます。

format1$pk <- cumsum( format1$var=="Id" )
library(reshape2)
dcast( format1, pk ~ var, value.var="num" )
于 2012-01-29T08:24:22.387 に答える
2
format1$ID <- cumsum(format1$var == "Id")
format2 <- reshape(format1, idvar = "ID",timevar = "var", direction = "wide")[-1]
names(format2) <- gsub("num.", "", names(format2)
#   Id Name Score
# 1  1  Tom     4
# 4  2 <NA>     7
# 6  3  Jim  <NA>

または、ステップをスキップしたい場合は、引数gsub()を介して出力列名を直接指定できます。varying

reshape(format1, idvar = "ID",timevar = "var", direction = "wide",
        varying = list(c("Id", "Name", "Score")))[-1]
于 2012-01-29T08:38:18.390 に答える