【发布时间】:2021-05-11 12:53:31
【问题描述】:
我有一个数据框,它有两列“id”和“detail”(下面的 df_current)。我需要按id对dataframe进行分组,并将文件展开,使列变为“Interface1”、“Interface2”等,并且接口列下的内容是每次出现接口值时的立即值。本质上是“!”用作分隔符,但在输出中不需要它。
所需的输出如下所示:“df_needed_from_current”。
我尝试了多种方法(group_by、spread、reshape、dcast 等),但无法正常工作。任何帮助将不胜感激!
当前数据帧示例(要在下面创建的代码):
| id | detail |
|---|---|
| 1 | ! |
| 1 | Interface1 |
| 1 | a |
| 1 | b |
| 1 | ! |
| 1 | Interface2 |
| 1 | a |
| 1 | b |
| 2 | ! |
| 2 | Interface1 |
| 2 | a |
| 2 | b |
| 2 | c |
| 2 | ! |
| 2 | Interface2 |
| 2 | a |
| 3 | ! |
| 3 | Interface1 |
| 3 | a |
| 3 | b |
| 3 | c |
| 3 | d |
df_current <- data.frame(
id = c("1","1","1","1","1","1","1","1","2",
"2","2","2","2","2","2","2","3","3",
"3","3","3","3","4","4","4","4","4",
"4","4","4","4","4","4","4","4","4",
"5","5","5","5","5","5","5","5","5",
"5","5","5","5"),
detail = c("!", "Interface1","a","b","!",
"Interface2","a","b","!","Interface1",
"a","b","c","!","Interface2","a",
"!", "Interface1","a","b","c","d",
"!", "Interface1","a","b","!",
"Interface2","a","b","c","!","Interface3",
"a","b","c","!","Interface1","a","b","!",
"Interface2","a","b","c","!","Interface3",
"a","b"))
需要数据框(创建代码):
| ID | Interface1 | Interface2 | Interface3 |
|---|---|---|---|
| 1 | a | a | NA |
| 1 | b | b | NA |
| 2 | a | a | NA |
| 2 | b | NA | NA |
| 2 | c | NA | NA |
| 3 | a | NA | NA |
| 3 | b | NA | NA |
| 3 | c | NA | NA |
| 3 | d | NA | NA |
df_needed_from_current <- data.frame(
id = c("1","1","2","2","2","3","3","3","3","4","4","4","5","5","5"),
Interface1 = c("a","b","a","b","c","a","b","c","d","a","b","NA","a","b","NA"),
Interface2 = c("a","b","a","NA","NA","NA","NA","NA","NA","a","b","c","a","b","c"),
Interface3 = c("NA","NA","NA","NA","NA","NA","NA","NA","NA","a","b","c","a","b","NA")
)
【问题讨论】:
标签: r dataframe group-by split transformation