我正在使用plot()
R 中的因子绘制连续变量(参见下面的示例).我不想要轴上的标签.如果没有as.factor
公式中的调用,ann = F
则会禁止打印标签,但as.factor
在公式中不起作用.
为什么是这样?
谢谢.
# example for SO
# example data
x <- sample(1:100, 10)
y <- c(rep(1, 5), rep(2, 5))
# ann = F doesn't work here
plot(x ~ as.factor(y), ann = F)
# ann = F does work here
plot(x ~ y, ann = F)
Run Code Online (Sandbox Code Playgroud) 我有以下代码
anna.table<-data.frame (anna1,anna2)
write.table<-(anna.table, file="anna.file.txt",sep='\t', quote=FALSE)
Run Code Online (Sandbox Code Playgroud)
我的表格最后包含如下数字
chr start end score
chr2 41237927 41238801 151
chr1 36976262 36977889 226
chr8 83023623 83025129 185
Run Code Online (Sandbox Code Playgroud)
等等......
之后,我试图只获得符合某些标准的值,例如得分小于特定值
所以我正在做以下事情
anna3<-"data/anna/anna.file.txt"
anna.total<-read.table(anna3,header=TRUE)
significant.anna<-subset(anna.total,score <=0.001)
Error: In Ops.factor(score, 0.001) <= not meaningful for factors
Run Code Online (Sandbox Code Playgroud)
所以我想问题是我的表有因素而不是整数
我想我的anna.total $得分是一个因素,我必须使它成为一个整数
如果我正确读取as.numeric可能会解决我的问题
我正在阅读as.numeric函数,但我无法理解我如何使用它
你能不能给我一些建议?
先感谢您
最好的问候安娜
PS:我尝试了以下内容
anna3<-"data/anna/anna.file.txt"
anna.total<-read.table(anna3,header=TRUE)
anna.total$score.new<-as.numeric (as.character(anna.total$score))
write.table(anna.total,file="peak.list.numeric.v3.txt",append = FALSE ,quote = FALSE,col.names =TRUE,row.names=FALSE, sep="\t")
anna.peaks<-subset(anna.total,fdr.new <=0.001)
Warning messages:
1: In Ops.factor(score, 0.001) : <= not meaningful for factors
Run Code Online (Sandbox Code Playgroud)
我又有同样的问题......
数据如下所示:
statenum casenum vnumber pnumber numfatal
1 48 3081 1 1 1
2 48 3080 5 1 1
3 48 3080 4 1 1
4 48 3080 1 1 1
5 48 3080 2 1 1
6 48 3080 3 1 1
7 48 3079 1 1 1
8 47 3080 1 1 1
9 47 3080 3 4 1
10 47 3080 2 3 1
11 47 3080 3 2 1
12 47 3080 2 2 1
13 47 …
Run Code Online (Sandbox Code Playgroud) 我有一个类似于下面的data.frame.我通过删除我不感兴趣的行来预处理它.我的大多数列是'因素',其'级别'不会更新,因为我过滤data.frame.
我可以看到我在下面做的事情并不理想.在修改data.frame时如何更新因子级别?下面是出现问题的演示.
# generate data
set.seed(2013)
df <- data.frame(site = sample(c("A","B","C"), 50, replace = TRUE),
currency = sample(c("USD", "EUR", "GBP", "CNY", "CHF"),50, replace=TRUE, prob=c(10,6,5,6,0.5)),
value = ceiling(rnorm(50)*10))
# check counts to see there is one entry where currency = CHF
count(df, vars="currency")
>currency freq
>1 CHF 1
>2 CNY 13
>3 EUR 16
>4 GBP 6
>5 USD 14
# filter out all entires where site = A, i.e. take subset of df
df <- df[!(df$site=="A"),]
# check counts again …
Run Code Online (Sandbox Code Playgroud) 一段时间后我回到了R,以下让我难过:
我想在facor级别列表中建立一个位置因子值列表.例:
> data = c("a", "b", "a","a","c")
> fdata = factor(data)
> fdata
[1] a b a a c
Levels: a b c
> fdata$lvl_idx <- ????
Run Code Online (Sandbox Code Playgroud)
这样:
> fdata$lvl_idx
[1] 1 2 1 1 3
Run Code Online (Sandbox Code Playgroud)
感谢任何提示或提示.
labs = letters[3:7]
vec = rep(1:5,2)
Run Code Online (Sandbox Code Playgroud)
如何获得水平为“c”“d”“e”“f”“g”的因子?
在 Windows 10 中使用 R 3.3.1。我正在根据 95 行数据绘制 xy 图。数据分为 6 个不同的分组(称为“组”的因素)。 绘图本身很简单,但我无法让图例正确解释因素和颜色。
这是变量 v1 中的数据:
v1 <- structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, …
Run Code Online (Sandbox Code Playgroud) 我有一个data.frame有几个因素,如:
df<-data.frame(Var1=as.factor(sample(c("AB", "BC", "CD", "DE", "EF"), 1000, replace=TRUE)))
Run Code Online (Sandbox Code Playgroud)
同
summary(df$Var1)
AB BC CD DE EF
209 195 178 221 197
Run Code Online (Sandbox Code Playgroud)
我想在data.frame中绘制每个因子的级别频率,如下所示:
ggplot(df, aes(x=factor(1), fill=factor(Var1)))+
geom_bar(width=1, colour="black")+
coord_polar(theta="y")+
theme_void()
Run Code Online (Sandbox Code Playgroud)
但是,级别的顺序是按字母顺序而不是按频率.使用次数从库(plyr)我可以创建一个新data.frame,让我每一级的频率:
df_count <-count(df, "Var1")
Var1 freq
1 AB 209
2 BC 195
3 CD 178
4 DE 221
5 EF 197
Run Code Online (Sandbox Code Playgroud)
然后我可以使用它重新排序
df_count$Var1<-factor(df_count$Var1, levels=df_count$Var1[order(df_count$freq, decreasing=TRUE)])
Run Code Online (Sandbox Code Playgroud)
在绘制时给出了我想要的,每个级别的排序频率.
1.)这是最优雅的解决方案吗?它为我的原始data.frame中的每个因子/列提供了额外的data.frame,我觉得必须有一个更简单的方法.
2.)在绘图时,如何重命名图例标签并确保它们被分配了正确的因子水平?如果我使用
scale_fill_manual(labels=c("Name of AB", "Name of BC", "Name of CD", "Name of DE","Name of EF"))
Run Code Online (Sandbox Code Playgroud)
标签与正确的级别无关.这里图例中的第一个条目是"DE",因为它是频率最高的级别,但标签会在scale_fill_manual中 …
我有以下数据:
df <- as.data.frame(c(rep(1,3),rep(2,3),rep(3,3)))
names(df) <- "cont_var"
df$factor_var <- as.factor(rep(c("fac1","fac2","fac3"),3))
df$prop <- c(10,20,70,20,30,50,25,40,35)
Run Code Online (Sandbox Code Playgroud)
"factor_var"的级别为:
> levels(df$factor_var)
[1] "fac1" "fac2" "fac3"
Run Code Online (Sandbox Code Playgroud)
我使用以下内容制作堆积区域图:
library(ggplot)
ggplot(df, aes(x=cont_var, y=prop, fill=factor_var)) +
geom_area(colour="black",size=.2, alpha=.8) +
scale_fill_manual(values=c("blue", "grey", "red"))
Run Code Online (Sandbox Code Playgroud)
返回以下结果:
图例显示"factor_var"按照之前看到的级别排序,但区域没有以相同的顺序堆叠.如何在底部生成红色然后灰色然后蓝色堆叠在顶部的输出,如图例中的情况?
(注意:这是我需要的顺序(factor_var是一个有序变量),出于美学原因,它不仅仅是将堆叠与图例顺序相匹配的情况.)
编辑:所需结果如下所示
解决方案
需要重新排序数据帧才能创建所需的结果:
newdata <- df[order(df$cont_var, df$factor_var),]
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助.
我有一个R数据帧,其中一列是其级别具有隐式排序的因子.如何以下列方式将因子级别转换为特定整数:
例如,这是我的数据框:
agree <- c("Strongly agree", "Somewhat disagree", "Somewhat agree",
"Neutral", "Strongly agree", "Strongly disagree", "Neutral")
age <- c(41, 35, 29, 42, 31, 22, 58)
df <- data.frame(age, agree)
df
# age agree
# 1 41 Strongly agree
# 2 35 Somewhat disagree
# 3 29 Somewhat agree
# 4 42 Neutral
# 5 31 Strongly …
Run Code Online (Sandbox Code Playgroud)