我正在嘗試獲取一些資料并清理它以供最終用戶查看,但是我是 R 新手,似乎不太了解如何去做。另外,這是我的第一篇文章,所以如果我寫這個問題的方式有任何格式或結構問題,請告訴我。
現在的資料是什么樣的:
| 名稱 | 日期 | 原因 |
|---|---|---|
| 約翰 | 2022 年 1 月 1 日 | 晚了 |
| 約翰 | 2022 年 1 月 2 日 | 晚了 |
| 約翰 | 2022 年 1 月 4 日 | 缺席的 |
| 貝蒂 | 2022 年 1 月 3 日 | 缺席的 |
| 貝蒂 | 2022 年 1 月 5 日 | 沒有電話 |
| 貝蒂 | 2022 年 1 月 7 日 | 沒有電話 |
| 凱爾 | 2022 年 1 月 3 日 | 缺席的 |
| 凱爾 | 2022 年 1 月 5 日 | 沒有電話 |
| 凱爾 | 2022 年 1 月 7 日 | 沒有電話 |
我想看看是否有辦法將其壓縮,這樣對于每個名字,你的日期和理由都在同一行。像這樣:
| 名稱 | 日期1 | 原因1 | 日期2 | 原因2 | 日期3 | 原因3 |
|---|---|---|---|---|---|---|
| 約翰 | 2022 年 1 月 1 日 | 晚了 | 2022 年 1 月 2 日 | 晚了 | 2022 年 1 月 4 日 | 缺席的 |
| 貝蒂 | 2022 年 1 月 3 日 | 缺席的 | 2022 年 1 月 5 日 | 沒有電話 | 2022 年 1 月 7 日 | 沒有電話 |
| 凱爾 | 2022 年 1 月 3 日 | 缺席的 | 2022 年 1 月 5 日 | 沒有電話 | 2022 年 1 月 7 日 | 沒有電話 |
或者,我嘗試使用dcast,但我的代碼生成了數字而不是日期。
new db <- dcast(db, name ~ reason, fun.aggregate = list, value.var = "date")
我想要什么:
| 名稱 | 晚了 | 缺席的 | 沒有電話 |
|---|---|---|---|
| 約翰 | 2022 年 1 月 1 日,2022 年 1 月 2 日 | 2022 年 1 月 4 日 | |
| 貝蒂 | 2022 年 1 月 3 日 | 2022 年 1 月 5 日,2022 年 1 月 7 日 | |
| 凱爾 | 2022 年 1 月 3 日 | 2022 年 1 月 5 日,2022 年 1 月 7 日 |
我得到了什么:
| 名稱 | 晚了 | 缺席的 | 沒有電話 |
|---|---|---|---|
| 約翰 | c(1620708300,1627236300) | 1639328820 | 數字(0) |
| 貝蒂 | 數字(0) | 1612973940 | c(1611937080, 1612455480) |
| 凱爾 | 數字(0) | 1639329540 | c(1635526800, 1639760400) |
編輯:
as.data.frame(pivot_wider(df, names_from=reason, values_from=date, values_fn=list, values_fill=list("")))感謝@Andre Wildberg ,我能夠將它從我需要使用它的地方移開,我需要的最后一步是從單元格中洗掉 c() 并能夠在這些欄位中顯示干凈的日期。
db<-structure(list(name = c("Debby", "Debby", "Debby",
"Debby", "Robert", "Robert", "Robert",
"Ryan", "Ryan", "Ryan", "Ryan",
"Ryan", "Ryan", "Brandon", "Brandon"
), reason = c("Absent", "Leave Early", "Late", "Leave Early",
"Leave Early", "Leave Early", "Absent", "Absent", "Absent", "Absent",
"Absent", "Leave Early", "Late", "Leave Early", "Leave Early"
), date = c("2021-05-11 04:45:00", "2021-05-15 04:02:00", "2021-07-25
18:05:00",
"2021-09-19 20:01:00", "2021-11-25 01:02:00", "2021-12-08 20:56:00",
"2021-12-16 17:30:00", "2021-10-09 17:00:00", "2021-11-07 17:00:00",
"2021-11-12 17:00:00", "2021-11-28 17:00:00", "2021-12-11 01:31:00",
"2021-12-12 17:07:00", "2021-05-03 23:58:00", "2021-05-15 23:31:00"
)), row.names = c(NA, -15L), class = c("tbl_df", "tbl", "data.frame"
))
uj5u.com熱心網友回復:
如果您想保持觀察結果相結合,請嘗試此操作
library(tidyr)
as.data.frame(pivot_wider(df, names_from=reason, values_from=date,
values_fn=list, values_fill=list("")))
name
1 Debby
2 Robert
3 Ryan
4 Brandon
Absent
1 2021-05-11 04:45:00
2 2021-12-16 17:30:00
3 2021-10-09 17:00:00, 2021-11-07 17:00:00, 2021-11-12 17:00:00, 2021-11-28 17:00:00
4
Leave Early Late
1 2021-05-15 04:02:00, 2021-09-19 20:01:00 2021-07-25 18:05:00
2 2021-11-25 01:02:00, 2021-12-08 20:56:00
3 2021-12-11 01:31:00 2021-12-12 17:07:00
4 2021-05-03 23:58:00, 2021-05-15 23:31:00
資料
df <- structure(list(name = c("Debby", "Debby", "Debby", "Debby", "Robert",
"Robert", "Robert", "Ryan", "Ryan", "Ryan", "Ryan", "Ryan", "Ryan",
"Brandon", "Brandon"), reason = c("Absent", "Leave Early", "Late",
"Leave Early", "Leave Early", "Leave Early", "Absent", "Absent",
"Absent", "Absent", "Absent", "Leave Early", "Late", "Leave Early",
"Leave Early"), date = c("2021-05-11 04:45:00", "2021-05-15 04:02:00",
"2021-07-25 18:05:00", "2021-09-19 20:01:00", "2021-11-25 01:02:00",
"2021-12-08 20:56:00", "2021-12-16 17:30:00", "2021-10-09 17:00:00",
"2021-11-07 17:00:00", "2021-11-12 17:00:00", "2021-11-28 17:00:00",
"2021-12-11 01:31:00", "2021-12-12 17:07:00", "2021-05-03 23:58:00",
"2021-05-15 23:31:00")), row.names = c(NA, -15L), class = c("tbl_df",
"tbl", "data.frame"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412278.html
標籤:
