我有一個看起來像這樣的資料框:
| 日期 | 變數 |
|---|---|
| 2022-01-01 | a,b,...,h |
| 2022-01-02 | a,b,...,z |
現在我想在 R 中使用單獨的函式與 dplyr 或任何其他使用標準“,”分隔所有字符的函式,但我不知道每個單元格中有多少個唯一字符來創建未知數量的列。將有不平衡的列填充 NA。
理想情況下,我希望報告的資料框如下所示:
| 日期 | 變數1 | 變數2 | 變數... | 變數... | var_Inf |
|---|---|---|---|---|---|
| 2022-01-01 | 一個 | b | ... | H | 不適用 |
| 2022-01-02 | 一個 | b | ... | ... | z |
我怎么能在 R 中做到這一點?
date = seq(as.Date("2022/1/1"), as.Date("2022/1/2"), by = "day")
date
var = c("a,b,...,h","a,b,...,z");var
df = tibble(date,var)
一個更具重現性的例子是這樣的:
var = c("a,b,c,d,e,h","a,b,c,d,e,f,i,z");var
df = tibble(date,var)
但考慮到我不知道每個列元素上的字母數。
我怎樣才能在 R 中做到這一點?
uj5u.com熱心網友回復:
我們可以這樣做:使用separate_rows()fromtidyr包引入長格式可以更輕松地處理此類任務:
library(dplyr)
library(tidyr)
df %>%
separate_rows(var) %>%
group_by(date) %>%
mutate(id = row_number()) %>%
pivot_wider(names_from = id, values_from = var, names_glue = "var{id}")
date var1 var2 var3 var4
<chr> <chr> <chr> <chr> <chr>
1 2022-01-01 a b x h
2 2022-01-02 a b x z
資料:
df <- structure(list(date = c("2022-01-01", "2022-01-02"), var = c("a,b,x,h",
"a,b,x,z")), class = "data.frame", row.names = c(NA, -2L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521628.html
標籤:r数据框dplyr
上一篇:使用因子df在r中創建數字df
