2011-09-08 69 views

Trả lời

20

Nếu dataframe của bạn thực sự là ở định dạng đó, sau đó tất cả các vectơ của bạn sẽ được vectơ nhân vật. Hoặc, về cơ bản bạn có một ma trận nhân vật và bạn có thể làm điều này:

data.frame(t(df)) 

Sẽ tốt hơn, tuy nhiên, chỉ cần định nghĩa nó theo cách bạn muốn nó từ get-đi

df <- data.frame(c('A','B','C','D','E'), 
       c(1, 2, 3, 4, 5), 
       c(6, 7, 8, 9, 0)) 

Bạn cũng có thể làm được điều này

df <- data.frame(LETTERS[1:5], 1:5, c(6:9, 0)) 

Nếu bạn muốn cung cấp cho các tên cột, bạn có thể làm điều này

df <- data.frame(L = LETTERS[1:5], N1 = 1:5, N2 = c(6:9, 0)) 

Đôi khi, nếu tôi sử dụng read.DIF dữ liệu Excel, dữ liệu sẽ được chuyển đổi. Đó có phải là cách bạn nhận được dữ liệu gốc không? Nếu vậy, bạn có thể gọi

read.DIF(filename, transpose = T) 

để lấy dữ liệu theo đúng hướng.

+0

Điều đó đã hoàn thành, nhờ một bó – Travis

+7

Nên chỉ cần nói 'as.data.frame (t (df))'. Nó không ở chế độ "nhân vật". –

+0

đã giúp tôi rất nhiều! – greg121

1

tôi thực sự khuyên data.table cách tiếp cận mà không cần các bước thủ công becauce họ là dễ bị lỗi

A <- c(1,6) 
B <- c(2,7) 
C <- c(3,8) 
D <- c(4,9) 
E <- c(5,0) 
df <- data.frame(A,B,C,D,E) 
df 

library('data.table') 
dat.m <- melt(as.data.table(df, keep.rownames = "Vars"), id.vars = "Vars") # https://stackoverflow.com/a/44128640/54964 

dat.m 

Output

A B C D E 
1 1 2 3 4 5 
2 6 7 8 9 0 
    Vars variable value 
1: 1  A  1 
2: 2  A  6 
3: 1  B  2 
4: 2  B  7 
5: 1  C  3 
6: 2  C  8 
7: 1  D  4 
8: 2  D  9 
9: 1  E  5 
10: 2  E  0 

R: 3.4.0 (backports)
Hệ điều hành: Debian 8,7

Các vấn đề liên quan