我有一個關于旋轉的問題。如果我有一個從網路上抓取的資料集,并且只給了我列中的所有資料,我如何將資料轉移到它們的特定列:示例
| 柱子 |
|---|
| 日期 |
| 數字 |
| 附加號碼 |
| 2022-08-10 |
| 2,4,5,6 |
| 7 |
| 2022-08-11 |
| 2,4,5,3 |
| 11 |
| 2022-08-12 |
| 2,4,5,8 |
| 14 |
該表的理想輸出將是:
| 日期 | 數字 | 附加號碼 |
|---|---|---|
| 2022-08-10 | 2,4,5,6 | 7 |
| 2022-08-11 | 2,4,5,3 | 11 |
| 2022-08-12 | 2,4,5,8 | 14 |
uj5u.com熱心網友回復:
您可以使用matrix來重塑矢量。如果需要,可以將其轉換為data.framewith as.data.frame。如果需要,可以使用 轉換列的型別type.convert。
. <- matrix(s, ncol=3, byrow=TRUE)
. <- setNames(as.data.frame(.[-1,]), .[1,])
type.convert(., as.is=TRUE)
# Date Number Additional Number
#1 2022-08-10 2,4,5,6 7
#2 2022-08-11 2,4,5,3 11
#3 2022-08-12 2,4,5,8 14
資料
s <- c("Date","Number","Additional Number","2022-08-10","2,4,5,6","7",
"2022-08-11","2,4,5,3","11","2022-08-12","2,4,5,8","14")
uj5u.com熱心網友回復:
如果您的原始資料是具有一列的資料框,那么這是在基礎 R 中的另一種嘗試:
df <- as.data.frame(t(do.call(cbind, split(df, rep(1:(nrow(df) %/% 3), each = 3)))))
names(df) <- as.character(unlist(df[1,]))
df <- df[-1, ]
row.names(df) <- NULL
df
Date Number Additional Number
1 2022-08-10 2,4,5,6 7
2 2022-08-11 2,4,5,3 11
3 2022-08-12 2,4,5,8 14
uj5u.com熱心網友回復:
我正在為下面的問題提供一個更“經典”的解決方案。這涉及到模數方法,該方法對于像這樣的反透視資料很有用。
library(tidyverse)
df <- tibble(x=letters)
df %>%
mutate(modulo=row_number()%%4, #pattern repeats every 4 entries so i put a 4
id=row_number()) %>% # row id
pivot_wider(names_from=modulo,values_from=x) %>%
fill(3:5,.direction="up") %>% #leave the first column and fill direction up
rename(col=2,col1=3,col2=4,col3=5) %>% #renamed the cols
filter(!is.na(col)) #remove empty from first column
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515275.html
標籤:r小标题
