Q
R數據幀格式組
1
A
回答
4
df <- read.table(sep=" ", header=F, text="
ABC 2
ABC 4
ABC 6
DEF 10
DEF 20")
unstack(df, form=V2~V1)
# $ABC
# [1] 2 4 6
#
# $DEF
# [1] 10 20
unstack
在這種情況下產生一個list
作爲列不具有相同的長度。在長度相同的情況下:
df <- read.table(sep=" ", header=F, text="
ABC 2
ABC 4
ABC 6
DEF 10
DEF 20
DEF 20")
t(unstack(df, form=V2~V1))
# [,1] [,2] [,3]
# ABC 2 4 6
# DEF 10 20 20
0
你想獲得一個稀疏矩陣嗎?您示例中的兩行具有不同的長度。嘗試函數產生一個列表:
mat<-cbind(
c("ABC","ABC","ABC","DEF","DEF"),
c(2,4,6,10,20)
)
count<-function(mat){
values<-unique(mat[,1])
outlist<-list()
for(v in values){
outlist[[v]]<-mat[mat[,1]==v,2]
}
return(outlist)
}
count(mat)
,這將給你這樣的結果:
$ABC
[1] "2" "4" "6"
$DEF
[1] "10" "20"
2
嘛,有什麼看法?他們是否想要爲每個類別測量相同的東西?
因爲每個類別的觀察數量都不相同,所以您無法準確獲取與發佈的數據幀完全相同的數據。但是如果你給「DEF」添加一個「NA」,你可以做到這一點。
像這樣:
ABC 2 4 6
DEF 10 20 NA
如果這是你想要的,你可以只使用reshape2的dcast
。
但是你必須命名意見:
library(reshape2)
df <- data.frame(obs =c(1:3, 1:2),
categories = c(rep("ABC", 3), rep("DEF",2)),
values=c(2,4,6,10,20), stringsAsFactors=FALSE)
df2 <- dcast(df, categories~obs)
df2
# categories 1 2 3
# 1 ABC 2 4 6
# 2 DEF 10 20 NA
+1
爲'dcast'替代+1。請參閱[我的回答](http://stackoverflow.com/a/21248135/1270695)以獲取「事後」創建「obs」列的方法。 – A5C1D2H2I1M1N2O1R2T1
1
要添加到您的選擇:
這似乎是一個基本的「長廣」重塑的問題,但它缺少一個「時間「變量。這很容易通過使用ave
重新創建一個:
ave(as.character(df$V1), df$V1, FUN = seq_along)
# [1] "1" "2" "3" "1" "2"
df$time <- ave(as.character(df$V1), df$V1, FUN = seq_along)
一旦你有一個「時間」變量,使用reshape
是非常簡單的:
reshape(df, idvar="V1", timevar="time", direction = "wide")
# V1 V2.1 V2.2 V2.3
# 1 ABC 2 4 6
# 4 DEF 10 20 NA
相反,如果你想要一個list
,沒有需要時間變量。只需使用split
:
split(df$V2, df$V1)
# $ABC
# [1] 2 4 6
#
# $DEF
# [1] 10 20
#
同樣,如果你的數據是平衡的,split
加rbind
可以得到你所需要的。使用@lukeA的樣本數據:
df <- read.table(sep=" ", header=F, text="
ABC 2
ABC 4
ABC 6
DEF 10
DEF 20
DEF 20")
do.call(rbind, split(df$V2, df$V1))
# [,1] [,2] [,3]
# ABC 2 4 6
# DEF 10 20 20
相關問題
- 1. R:格式數據幀摘要
- 2. R重組數據幀
- 3. R:將寬格式的數據幀隱藏成長格式
- 4. python數據幀寫入R數據格式
- 5. R數據幀
- 6. R:數據幀
- 7. R根據組/子網格對數據幀進行彙總
- 8. R gsub刪除模式並返回數據幀格式
- 9. R:將2D數據幀列表重組爲一個數據幀
- 10. 格式在數據幀
- 11. R中的每小時組數據幀
- 12. 使用組由r中的數據幀
- 13. R量表和重組以數據幀
- 14. 在R數據幀的打印組名
- 15. R:在數據幀
- 16. 從R數據幀
- 17. R:從數據幀
- 18. R:在數據幀
- 19. R:據幀的組織,結構和子集數據幀
- 20. 如何將數據幀轉換爲JSON格式中的R
- 21. 在R中格式化一個數據幀
- 22. 將整個數據幀轉換爲標準標準格式R
- 23. 如何有R中閃亮的數據幀的條件格式?
- 24. 重新格式化R中的雜亂數據幀列
- 25. R中的1D數據幀轉換爲2D格式
- 26. 如何JSON格式的數據幀的列轉換中的R
- 27. 如何在r中輸出正確格式的數據幀?
- 28. 如何保持原班/格式時,轉置數據幀[R
- 29. - [R變換數據幀裝入籃格式
- 30. 將數據幀轉換爲R中的特定格式化JSON
如果列長度相同會怎樣? – Harpreet