簡體   English   中英

如何在 R 中將行中包含多個變量的數據框從寬轉換為長?

[英]How do I convert a data frame with multiple variables in rows from wide to long in R?

我有一個看起來像的數據框:

Amount          person1  person2  person3 

pocketmoney     0.5        1.3     1.7

chores          3          5        2

我如何把它變成這樣的東西:


Person     Pocketmoney   chores

person1         0.5         3

person2         1.3         5

person3         1.7         2


謝謝!

我們可以使用data.table::transpose

library(data.table)
data.table::transpose(setDT(df1), make.names = "Amount",
    keep.names = 'Person')[]

-輸出

     Person pocketmoney chores
    <char>       <num>  <num>
1: person1         0.5      3
2: person2         1.3      5
3: person3         1.7      2

或者使用base R

data.frame(Person = seq_along(df1[-1]), t(df1[-1]))

數據

df1 <- structure(list(Amount = c("pocketmoney", "chores"), person1 = c(0.5, 
3), person2 = c(1.3, 5), person3 = c(1.7, 2)), 
class = "data.frame", row.names = c(NA, 
-2L))

使用整理器:

> df1 %>% 
    pivot_longer(-Amount) %>% 
    pivot_wider(names_from = Amount, values_from = value) %>% 
    mutate(name = sub("\\D+", "", name)) # remove "person"
# A tibble: 3 × 3
  name  pocketmoney chores
  <chr>       <dbl>  <dbl>
1 1             0.5      3
2 2             1.3      5
3 3             1.7      2

暫無
暫無

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

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