我有一个数据,我想找出哪个列具有最大值并输出该列名称.一个问题是,如果没有最大值(例如,所有数字相等)返回all_equal注释,或者如果两列具有相等的最大值,则与第三列相比,输出这两个列名称.
这是样本数据
test <- data.frame(A=c(5,NA,NA,1,NA,NA,3,NA,NA),B=c(NA,2,NA,NA,1,NA,NA,1,NA),C=c(NA,NA,1,NA,NA,1,NA,NA,3),gr=gl(3,3))
A B C gr
1 5 NA NA 1
2 NA 2 NA 1
3 NA NA 1 1
4 1 NA NA 2
5 NA 1 NA 2
6 NA NA 1 2
7 3 NA NA 3
8 NA 1 NA 3
9 NA NA 3 3
Run Code Online (Sandbox Code Playgroud)
在每一个gr有在列值A,B and C.我的目的是找到哪个列在该组中具有最大值,并将该列名称输出到名为的新列col_name.
如果所有值彼此相等,则gr=2输出为all_equal
如果列中的两列与第三列相比具有最大值,就像gr=3输出列名称A&C中的那样col_name.
我意识到没有它可能很难建立一个管道 gather …
我尝试将mutate新列添加到data.frame.当V列顺序从递减顺序变为递增顺序时,我使用其中的diff函数mutate将它们分类到新列中H.
V <- c(seq(30,-10,-10),seq(-10,30,10))
gr = rep(seq(1,3),each=10)
df <- data.frame(V,gr)
library(dplyr)
diff_df <- df%>%
group_by(gr)%>%
mutate(H=ifelse(diff(V)<0,"back","forward"))
Run Code Online (Sandbox Code Playgroud)
但是得到错误
Error: incompatible size (9), expecting 10 (the group size) or 1
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做
DIFF(DF $ V)
[1] -10 -10 -10 -10 0 10 10 10 10 0 -10 -10 -10 -10 0 10 10 10 10 0 -10 -10 -10 -10 0 10 10 10 10
似乎在逻辑上有效.当我在里面做的时候为什么我会收到错误dplyr?
我可能有一个非常简单的问题,即如果某些条件得到满足,则根据clas我df的变量调用变量.如果不满足条件,不要改变任何东西.
V <- seq(10,50,10)
gr = rep(seq(1,2),each=5)
clas=c("Normal","Abnormal","Fair","Fair","Normal","Fair","Normal","Normal","Abnormal","Fair")
df <- data.frame(V,gr,clas)
# V gr clas
# 1 10 1 Normal
# 2 20 1 Abnormal
# 3 30 1 Fair
# 4 40 1 Fair
# 5 50 1 Normal
# 6 10 2 Fair
# 7 20 2 Normal
# 8 30 2 Normal
# 9 40 2 Abnormal
# 10 50 2 Fair
Run Code Online (Sandbox Code Playgroud)
我想设置clas列所有Normal如果显示的值Normal时, V=20和V=30每个小组.如果这种情况不满意,则无需更改该组. …
我有一个关于将一列分为多列的问题。
我要分隔的字符串示例类似于“ 87 BestMovie.GOOD”,分隔位置是空格' '和'.'
我尝试过这样
df=data.frame(Eastwood=c('87 BestMovie.GOOD'))
sep=df%>%
separate(Eastwood,into=c('age','Select','Movie'),sep=c(' ','.'))
Run Code Online (Sandbox Code Playgroud)
警告消息:1:1位置的值太多:2 2:1位置的值太少:1
或者换个角度来看,我们可以实现字符串位置进行分隔吗?
谢谢!
我遇到了一个问题,即在第二轴功能的帮助下使用两个不同的数据,如前一篇文章中所述,如何使用-facets-with-a-dual-y-axis-ggplot.
我正在尝试使用geom_point,geom_bar但由于geom_bar数据范围不同,因此在图表中看不到.
这是我尝试过的;
point_data=data.frame(gr=seq(1,10),point_y=rnorm(10,0.25,0.1))
bar_data=data.frame(gr=seq(1,10),bar_y=rnorm(10,5,1))
library(ggplot2)
sec_axis_plot <- ggplot(point_data, aes(y=point_y, x=gr,col="red")) + #Enc vs Wafer
geom_point(size=5.5,alpha=1,stat='identity')+
geom_bar(data=bar_data,aes(x = gr, y = bar_y, fill = gr),stat = "identity") +
scale_y_continuous(sec.axis = sec_axis(trans=~ .*15,
name = 'bar_y',breaks=seq(0,10,0.5)),breaks=seq(0.10,0.5,0.05),limits = c(0.1,0.5),expand=c(0,0))+
facet_wrap(~gr, strip.position = 'bottom',nrow=1)+
theme_bw()
Run Code Online (Sandbox Code Playgroud)
可以看出bar_data被删除了.是否可以在这种情况下将它们一起绘制?
谢谢
我有一个超过40个因子级别的数据框,我想为每个级别分配不同的形状.然而,如图所示scale_shapes_table的ggplot2,我只能分配26他们与某!,",#等等.
但我知道在python或jmp中你可以分配许多形状(如星号,左三角形,直角三角形,矩形等).它也有可能ggplot2吗?
data=data.frame(gr=seq(1,40), x1=runif(40), y1=runif(40))
library(ggplot2)
ggplot(data=data,aes(x=x1,y=y1,shape=factor(gr),col=factor(gr)))+
geom_point(alpha = 0.3,size=4,stroke=1.4) +
scale_shape_manual(values=c(0:40))
Run Code Online (Sandbox Code Playgroud)
我有一个关于删除其行中包含某些字符串的组的问题,例如,如果包含..我想在不破坏管道的情况下实现这一目标.我的意思是不使用任何join功能.
示例数据
vals <- c("good","bad",'ugly',"good","bad.","ugly")
gr <- gl(2,3)
vals gr
1 good 1
2 bad 1
3 ugly 1
4 good 2
5 bad. 2
6 ugly 2
df <- data.frame(vals,gr)
Run Code Online (Sandbox Code Playgroud)
我试过了
library(dplyr)
df%>%
filter(!grepl("\\.",vals))
Run Code Online (Sandbox Code Playgroud)
它只删除符合条件的行.但我想删除整个gr 2.
vals gr
1 good 1
2 bad 1
3 ugly 1
4 good 2
5 ugly 2
Run Code Online (Sandbox Code Playgroud) 使用函数时,我无法删除矩形之间的空白geom_tile。
df <- data.frame(
x = c(seq(2,16,2),seq(17,39,2)),
y = c(rep(c(seq(8,26,2),seq(27,45,2)),each=20)),
z = c(1:400))
library(ggplot2)
ggplot(df, aes(x, y)) +
geom_tile(aes(fill = factor(z)), colour = "grey50")+
geom_vline(aes(xintercept=6),linetype="dashed",colour="red",size=1)+
geom_hline(aes(yintercept=24),linetype="dashed",colour="red",size=1)+
scale_x_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
scale_y_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)
直到这里我明白为什么会发生这种情况。为了继续前进,我可以转换x and y为因子水平以消除空间!但这次我失去了geom_vline和geom_hline台词。这可能是转换x and y因子水平发生的。
ggplot(df, aes(factor(x), factor(y))) +
geom_tile(aes(fill = factor(z)), colour = "grey50")+
geom_vline(aes(xintercept=6),linetype="dashed",colour="red",size=1)+
geom_hline(aes(yintercept=24),linetype="dashed",colour="red",size=1)+
#scale_x_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
#scale_y_continuous(expand = c(0, 0),breaks=seq(0,50,1))+
theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)
当我添加因子级别来geom_vline&geom_hline得到这个错误时!
UseMethod("rescale") 中的错误:没有适用于“factor”类对象的“rescale”方法 …
我正在读取目录中的 .txt 文件,并希望删除包含某些特定字符串的列。
for file in glob.iglob(files + '.txt', recursive=True):
cols = list(pd.read_csv(file, nrows =1))
df=pd.read_csv(file,header=0, skiprows=0, skipfooter=0, usecols =[i for i in cols if i.str.contains['TRIVIAL|EASY']==False])
Run Code Online (Sandbox Code Playgroud)
当我这样做时我得到
df=pd.read_csv(文件,header=0,skiprows=0,skipfooter=0,usecols =[i for i >in cols if i.str.contains['PASS']==True])
属性错误:“str”对象没有属性“str”
我无法弄清楚我需要修复哪一部分?
我想制作df一个透明 3d 球体内部的轨迹图。
我搜索了 stackoverflow,但找不到相同的问题。因此,它可能对每个对其向量的轨迹感兴趣的人有所帮助。
该df会是这样的
df <- data.frame(mx=runif(100,-0.05,0.05),
my=runif(100,-1,1),
mz=runif(100,-0.5,0.5))
Run Code Online (Sandbox Code Playgroud)
