簡體   English   中英

重塑R中的數據

[英]Pivoting data in R with reshape

我敢肯定這是重復的,但是我覺得我已經接近解決方案了。 我有一個名為Data的數據框,它具有列名和數據結構,如下所示:

Col1, Col2, Col3, Val1, Val2, Val3, Val4
U,U,A,2,3,9,4

我想將其轉換為如下形式:

Types, Col1, Col2, Col3, Nums
Val1, U, U, A, 2
Val2, U, U, A, 3
Val3, U, U, A, 9
Val4, U, U, A, 4

但是我似乎無法使reshape2包正常工作。 我試過了:

library(reshape2)
melt <- melt(data)
d_melt <- dcast(melt, Col1+Col2+Col3 ~ Val1+Val2+Val3)

但這並不能提供我想要的正確數據形式。 同樣,如果我反轉操作數:

d_melt <- dcast(melt, Val1+Val2+Val3 ~ Col1+Col2+Col3)

這似乎也不起作用。

我靠近嗎? 我在R中的樞軸上不是很好,但是我感覺缺少一些參數(可能是不同的工具?)來顯示新的字段名稱。

單獨melt達到以下效果:

melt(df)
# Using Col1, Col2, Col3 as id variables
#   Col1 Col2 Col3 variable value
# 1    U    U    A     Val1     2
# 2    U    U    A     Val2     3
# 3    U    U    A     Val3     9
# 4    U    U    A     Val4     4

我會改用tidyr::gather

library(dplyr)
library(tidyr)

read.table(text = "Col1, Col2, Col3, Val1, Val2, Val3, Val4
                   U,U,A,2,3,9,4", 
                   header = TRUE, 
                   stringsAsFactors = FALSE, 
                   sep = ",") %>% 
gather(Types, Nums, starts_with("Val"))

結果:

  Col1 Col2 Col3 Types Nums
1    U    U    A  Val1    2
2    U    U    A  Val2    3
3    U    U    A  Val3    9
4    U    U    A  Val4    4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM