【发布时间】:2021-09-27 18:30:04
【问题描述】:
例如,我有这个数据框:
| Id | Age |
|---|---|
| 1 | 14 |
| 2 | 28 |
我想写一个长这样的专栏:
| Id | new column |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 14 | |
| 28 |
我该怎么办?
【问题讨论】:
例如,我有这个数据框:
| Id | Age |
|---|---|
| 1 | 14 |
| 2 | 28 |
我想写一个长这样的专栏:
| Id | new column |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 14 | |
| 28 |
我该怎么办?
【问题讨论】:
我们可以unlist 数据并通过基于max length 填充NA 创建列
lst1 <- list(df1$id, unlist(df1))
out <- data.frame(lapply(lst1, `length<-`, max(lengths(lst1))))
names(out) <- c("id", "new_column")
【讨论】:
这是另一种方法:
df1 <- data.frame(New_column = c(df[,"Id"], df[,"Age"]))
merge(df$Id, df1, by="row.names", all=TRUE)[,-1]
输出:
x New_column
1 1 1
2 2 2
3 NA 14
4 NA 28
【讨论】:
dplyr 的方法
library(dplyr)
df %>%
mutate(Age = Id) %>%
bind_rows(
df %>%
mutate(Id = NA)
) %>%
rename(new_column = Age)
# A tibble: 4 x 2
Id new_column
<int> <int>
1 1 1
2 2 2
3 NA 14
4 NA 28
【讨论】: