R语言 如何将一行中的值作为新列添加到另一行中?

gzszwxb4  于 2023-05-26  发布在  其他
关注(0)|答案(2)|浏览(240)

我如何获取一行中的值,并将它们作为新列添加到另一行中(在R中首选)
因此,我有一个大型数据集,其格式如下:

| Column A | Column B | Column C |
| -------- | -------- | -------- |
| 12       | 6        | 4
| 2        | 5        | 3
| 6        | 7        | 8

有许多行。
我想数据被重新格式化如下:

| Column A | Column B | Column C | Column D | Column E | Column F | Column G | Column H | Column I|
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
| 12       | 6        |4         |2         | 5        | 3        | 6        | 7        | 8        |

有没有一个函数可以很容易地修改来处理一个大的数据集和多个行?
谢谢你的帮助!

1qczuiv0

1qczuiv01#

这将获取任意 Dataframe 并使其成为单行 Dataframe 。在此过程中有一个隐式矩阵转换,因此如果您有混合数据类型,则可能需要在最后转换列。

input |> unlist() |> t() |> as.data.frame()
#   Column.A1 Column.A2 Column.A3 Column.B1 Column.B2 Column.B3 Column.C1 Column.C2
# 1        12         2         6         6         5         7         4         3
#   Column.C3
# 1         8

这个版本完全通过list s,所以不应该做任何类型转换:

input |>
  lapply(\(x)(do.call(what = cbind.data.frame, args = as.list(x)))) |>
  do.call(what = cbind.data.frame)
#   Column.A.12 Column.A.2 Column.A.6 Column.B.6 Column.B.5 Column.B.7 Column.C.4L
# 1          12          2          6          6          5          7           4
#   Column.C.3L Column.C.8L
# 1           3           8

使用此示例数据:

input = read.table(text = 'Column A | Column B | Column C
 12       | 6        | 4
 2        | 5        | 3
 6        | 7        | 8', header = T, sep = "|")
yzuktlbb

yzuktlbb2#

嗨,桑尼,如果我没有弄错的话。
要通过将一行中的值添加为R中另一行中的新列来转换数据集,可以使用t()函数转置数据,然后相应地操作它。下面是一个如何实现此目标的示例:

df <- data.frame(
  ColumnA = c(12, 2, 6),
  ColumnB = c(6, 5, 7),
  ColumnC = c(4, 3, 8)
)

# Transpose the data
transposed <- as.matrix(t(df))

# Combine the rows and convert
new_df <- data.frame(t(matrix(transposed, nrow = 1)))

# Rename the columns
new_names <- c("ColumnA", "ColumnB", "ColumnC", "ColumnD", "ColumnE", "ColumnF", "ColumnG", "ColumnH", "ColumnI")
names(new_df) <- new_names

# Output the transformed data frame
new_df

我希望这对你有帮助。如果你需要更多的助手,尽管问吧

相关问题