gpt4 book ai didi

r - 在 R 中排列数据框

转载 作者:行者123 更新时间:2023-12-02 09:29:01 24 4
gpt4 key购买 nike

我有一个不同基因的基因突变位点数据框。我想重新排列数据帧,以便每一行只有一个值,并且该值从整个数据帧中从最低到最高排列。我在下面有一个简短的例子。

目前的外观如下:

a=c('1', '2', '5')
b=c('1', '2', '7')
c=c('5', '6', NA)
df=data.frame(a,b,c)

A B C
1 1 1 5
2 2 2 6
3 5 7 NA

这是我希望它的外观:

   A  B  C  
1 1 1 NA
2 2 2 NA
3 5 NA 5
4 NA NA 6
5 NA 7 NA

任何帮助将不胜感激。谢谢。

最佳答案

这是一个可能的解决方案

v1 <- sort(unlist(lapply(df, function(x) 
unique(x[!is.na(x)])), use.names=FALSE))
l1 <- length(unique(v1))
m1 <- matrix(, ncol=ncol(df), nrow=l1)
lst <- split(v1, v1)
i1 <- rep(seq_along(lst), lengths(lst))
j1 <- unlist(lapply(lst, function(x) which(df==unique(x),
arr.ind=TRUE)[,2]), use.names=FALSE)
m1[cbind(i1,j1)] <- v1
m1
# [,1] [,2] [,3]
# [1,] 1 1 NA
# [2,] 2 2 NA
# [3,] 5 NA 5
# [4,] NA NA 6
# [5,] NA 7 NA

数据

df <- structure(list(A = c(1L, 2L, 5L), B = c(1L, 2L, 
7L), C = c(5L,
6L, NA)), .Names = c("A", "B", "C"), class = "data.frame",
row.names = c("1", "2", "3"))

关于r - 在 R 中排列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997489/

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