我想用ggplot2创建一个森林图.
目标是创建一个包含名为X1,X2,X3,X4,X5和X6的6行的森林图.这些标签应出现在左侧.垂直虚线应出现在x = 1处.此外,在图的右侧,平均值后跟95%CI应出现在每一行.
我的数据具有以下平均值,较低的95%间隔和较高的95%间隔:
mean <- c(1.29,0.76,2.43,1.68,1.22,1.7)
lower <- c(0.84,0.50,1.58,1.1,0.8,1.11)
upper <- c(1.95,1.16,3.67,2.54,1.85,2.56)
Run Code Online (Sandbox Code Playgroud)
其中X1对应于1.29(0.84,1.95)等等.
我希望这不是一个问题,并希望这可以作为那些不熟悉R中的森林情节的人的指南,比如我自己.
我希望使用ggplot2. 我想写这样的东西:“阿尔法-男性百分比”,其中阿尔法是斜体。
我在我的情节代码中尝试了以下内容:
ylab(expression(paste("The", italic("alpha"),"-male percentage"))
Run Code Online (Sandbox Code Playgroud)
然而“alpha”仍然不是斜体。有人可以帮忙吗?
我无法chartr()在我的数据框的所有列上应用该函数以将字母转换为数字.
我在单列上管理它,但我希望能够在整个数据框上完成它.以下是我的数据示例:
ID = c(1,2,3)
POS1 = c('AG','GC','TT')
POS2 = c('GT','CC','TC')
POS3 = c('GG','CT','AT')
DF = data.frame(ID,POS1,POS2,POS3)
DF$POS1X <- chartr('ACGT','1234',DF$POS1)
ID POS1 POS2 POS3 POS1X
1 1 AG GT GG 13
2 2 GC CC CT 32
3 3 TT TC AT 44
Run Code Online (Sandbox Code Playgroud)
从代码中可以看出,我希望将A转换为1,将C转换为2,将G转换为3,将T转换为4.我有40多列,因此重复上述相同的命令40次以上将是不切实际的(特别是如果我比如说数百列,遇到同样的问题
ykl
我想创建一个新列,报告报告的col1值大于零,直到遇到大于零的新col1值(参见df2中的col2).即col1中的零值被大于零的观测值替换.
ID = c(1,1,1,1,1,1,1,1,2,2,2,2)
col1 = c(500,0,0,0,600,0,0,0,450,0,0,0)
df1 = data.frame(ID,col1)
ID = c(1,1,1,1,1,1,1,1,2,2,2,2)
col1 = c(500,0,0,0,600,0,0,0,450,0,0,0)
col2 = c(500,500,500,500,600,600,600,600,450,450,450,450)
df2 = data.frame(ID,col1,col2)
Run Code Online (Sandbox Code Playgroud)
这样做的任何方式?
考虑以下数据框:
ID <- c(1,1,1,2,2,3,3,3,3)
A <- c("No","No","Yes","Yes","Yes","No","No","No","No")
B <- c("Yes","Yes","Yes","Yes","Yes","No","No","No","No")
df <- data.frame(ID,A,B)
Run Code Online (Sandbox Code Playgroud)
我想创建 B 列,其中 A 列中至少出现一个“是”会导致 B 列中每个单独的 ID 仅有“是”值。我尝试了以下两种方法(我觉得我已经差不多了):
library(dplyr)
df <- df %>%
group_by(ID) %>%
mutate(B1=ifelse(A == "Yes", "Yes", "No")) # B1 is the new column for comparison
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给出了与 A 相同的列
和
df2 <- transform(df, B1= ave(A, ID, FUN=function(x) x[A == "Yes"]))
Run Code Online (Sandbox Code Playgroud)
产生错误消息:
1:在 x[...] <- m 中:要替换的项目数不是替换长度的倍数
非常感谢您的帮助。