规范化R中每行的数据

规范化R中每行的数据,r,dataframe,ggplot2,boxplot,normalize,R,Dataframe,Ggplot2,Boxplot,Normalize,如何缩放/标准化每行数据(观察值)?类似于[-1:1]的z分数 我以前看过一篇文章,其中涉及像这样对整个数据集进行规范化 ,但我想对每行进行归一化,这样它们就可以在同一个方框图中绘制,因为它们在x轴上都显示相同的图案 Obs <- c("A", "B", "C") count1 <- c(100,15,3) count2 <- c(250, 30, 5) count3 <- c(290, 20, 8) count

如何缩放/标准化每行数据(观察值)?类似于[-1:1]的z分数

我以前看过一篇文章,其中涉及像这样对整个数据集进行规范化 ,但我想对每行进行归一化,这样它们就可以在同一个方框图中绘制,因为它们在x轴上都显示相同的图案

Obs <- c("A", "B", "C")
count1 <- c(100,15,3)
count2 <- c(250, 30, 5)
count3 <- c(290, 20, 8)
count4<- c(80,12, 2 )
df <- data.frame(Obs, count1, count2, count3, count4)
dff<- df %>% pivot_longer(cols = !Obs, names_to = 'count', values_to = 'Value') 
ggplot(dff, aes(x = count, y = Value)) +
    geom_jitter(alpha = 0.1, color = "tomato") + 
    geom_boxplot()

Obs基于您共享的链接,您可以使用
apply
使用相应的函数在[-1,1]上重新缩放数据帧

library(scales)
library(ggplot2)
library(tidyr)

Obs <- c("A", "B", "C")
count1 <- c(100,15,3)
count2 <- c(250, 30, 5)
count3 <- c(290, 20, 8)
count4<- c(80,12, 2 )

df <- data.frame(count1, count2, count3, count4)

df <- as.data.frame(t(apply(df, 1, function(x)(2*(x-min(x))/(max(x)-min(x)))- 1)))

df <- cbind(Obs, df)

dff<- df %>% 
       tidyr::pivot_longer(cols = !Obs, names_to = 'count', values_to = 'Value') 


ggplot(dff, aes(x = count, y = Value)) +
     geom_jitter(alpha = 0.1, color = "tomato") + 
     geom_boxplot()


库(比例)
图书馆(GG2)
图书馆(tidyr)

Obs如果你将其旋转的时间更长,你可以根据你的观察结果和比例进行分组:

df %>% 
pivot_longer(cols = !Obs, names_to = 'count', values_to = 'Value') %>% group_by(Obs) %>% 
mutate(z=as.numeric(scale(Value))) %>% 
ggplot(aes(x=count,y=z))+geom_boxplot()

或者在base R中,只需执行以下操作:

boxplot(t(scale(t(df[,-1]))))

非常有用,谢谢!谢谢你,阿尔瓦罗!不客气@Ecg!