gpt4 book ai didi

r - 修改一行数据以获得漂亮的输出(摘要), reshape - 将行拆分为新的多列

转载 作者:行者123 更新时间:2023-12-02 16:36:06 25 4
gpt4 key购买 nike

我又需要你的帮助了。通常我知道如何解决我的问题,但在这种情况下我不知道。这是我的数据示例:

df <- t(data.frame(b = list(c('C:1874 N:3493','C:2642 A:7 M:1 N:2717','A:5298 N:69','C:5366 Y:1','A:5359 G:8'))))
row.names(df) <- 'x'
colnames(df) <- c('V1','V2','V3','V4','V5')
df

V1 V2 V3 V4 V5
x "C:1874 N:3493" "C:2642 A:7 M:1 N:2717" "A:5298 N:69" "C:5366 Y:1" "A:5359 G:8"

我正在寻找像这样存储在 df 中的不错的摘要 NA可以用空格或零代替:

    V1    V2    V3    V4    V5
A NA 7 5298 NA 5359
C 1874 2642 NA 5366 NA
N 3493 2717 69 NA NA
M NA 1 NA NA NA
Y NA NA NA 1 NA
G NA NA NA NA 8

到目前为止,我知道如何轻松地将元素从一列拆分为新行:

library(tidyr)
separate_rows(as.data.frame(df), V1, sep = " ")

V1 V2 V3 V4 V5
<chr> <chr> <chr> <chr> <chr>
1 C:1874 C:2642 A:7 M:1 N:2717 A:5298 N:69 C:5366 Y:1 A:5359 G:8
2 N:3493 C:2642 A:7 M:1 N:2717 A:5298 N:69 C:5366 Y:1 A:5359 G:8

输出不是很好,因为所有剩余的列都填充了来自第一列的结果,但我想可能在 sapply() 中执行此操作和 cbind()获得一个数据帧,其中结果数据帧来自每个输入列。但不知道接下来会发生什么。如何将每个字母放在第一列并进行很好的总结。

提前致谢!

最佳答案

这就是你想要的:

library(tidyverse)

df %>%
t() %>%
as_tibble(rownames = "colname") %>% # two columns: 'colname' (V1...V5) and 'x' (values)
separate_rows(x, sep = " ") %>% # spread 'x' over rows
separate(x, c("rowname", "value"), sep = ":") %>% # separate letter and value into two columns 'rowname' and 'value'
pivot_wider(names_from = "colname", values_from = "value") %>% # pivot into the wide form you want
arrange(rowname) # sort by rowname

给出

# A tibble: 6 x 6
rowname V1 V2 V3 V4 V5
<chr> <chr> <chr> <chr> <chr> <chr>
1 A NA 7 5298 NA 5359
2 C 1874 2642 NA 5366 NA
3 G NA NA NA NA 8
4 M NA 1 NA NA NA
5 N 3493 2717 69 NA NA
6 Y NA NA NA 1 NA

关于r - 修改一行数据以获得漂亮的输出(摘要), reshape - 将行拆分为新的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62712458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com