背景
在德国,有16个联邦州,其中10个属于西德,其中6个属于东德.在某些方面,例如某些癌症的死亡率,十个前西方国家和六个前东方国家之间存在持续差异.各组内各州之间也存在差异.
为了显示各州之间的差异,从每个州绘制数据,例如按年份划分的年龄标准化乳腺癌死亡率,可以产生一定的意义.16行的情节并不总是一个不错的选择,我不想打开讨论.有时,权力可以说是必须的.
问题
在情节上区分16条线可能很困难.为此,我通常使用RColorBrewer包中的颜色组合(前十种颜色Set3再加上该调色板的前六种颜色,对应于前十个西部和六个前东部状态)和线型(一种线型为东,一个西.)使用该lattice方案,各州1998 - 2010年年龄标准化乳腺癌死亡率的情节可能如下:

这个问题
我想做一个类似的情节使用ggplot,但我还没想出如何组合图例中的颜色和线条类型.到目前为止,我已经走到了这一步:

如果可以在ggplot图例中组合颜色和线条类型,那么如何去做呢?
这是创建数据框和图的代码:
mort3 <- structure(list(State = structure(c(8L, 9L, 11L, 12L, 4L, 2L,
6L, 13L, 3L, 5L, 7L, 10L, 14L, 15L, 1L, 16L, 8L, 9L, 11L, 12L,
4L, 2L, 6L, 13L, 3L, 5L, 7L, 10L, 14L, 15L, 1L, 16L, 8L, 9L,
11L, 12L, 4L, 2L, 6L, 13L, 3L, 5L, 7L, 10L, 14L, 15L, 1L, 16L,
8L, 9L, 11L, 12L, 4L, 2L, 6L, …Run Code Online (Sandbox Code Playgroud) 我们假设你有一个字符串:
strLine <- "The transactions (on your account) were as follows: 0 3,000 (500) 0 2.25 (1,200)"
Run Code Online (Sandbox Code Playgroud)
是否有一个函数将数字去除到数组/向量中,产生以下所需的解决方案:
result <- c(0, 3000, -500, 0, 2.25, -1200)?
Run Code Online (Sandbox Code Playgroud)
即
result[3] = -500
Run Code Online (Sandbox Code Playgroud)
请注意,数字以会计形式显示,因此负数出现在()之间.此外,您可以假设只有数字出现在数字首次出现的右侧.我对regexp并不是那么好,所以如果你能提供帮助,我会很感激.此外,我不想假设字符串总是相同,所以我希望在第一个数字的位置之前删除所有单词(和任何特殊字符).
我在R中有一个包含ID.A,ID.B和DISTANCE列的数据帧,其中distance表示ID.A和ID.B之间的距离.对于ID.A的每个值(1-> n),可能存在ID.B和DISTANCE的多个值(即ID.A中可能存在多个重复行,例如,值4中的每个都具有不同的ID.B并且该行的距离).
我希望能够删除ID.A重复的行,但是以距离值为条件,以便为每个ID.A记录留下最小的距离值.
希望这有道理吗?
提前谢谢了
编辑
希望一个例子证明比我的文本更有用.在这里,我想删除ID.A = 3的第二行和第三行:
myDF <- read.table(text="ID.A ID.B DISTANCE
1 3 1
2 6 8
3 2 0.4
3 3 1
3 8 5
4 8 7
5 2 11", header = TRUE)
Run Code Online (Sandbox Code Playgroud) 我正在使用ggplot(包名:ggplot2)绘制15行,每个行代表一个单独的实体,并希望为它创建一个图例.但是,我无法将图例条目划分为多个列.有人可以建议如何在ggplot环境中做同样的事情.
目前,我使用以下命令创建图例:
opts(title=plotName,legend.position='bottom')
Run Code Online (Sandbox Code Playgroud)
但是,这给出了一个列的图例.因此,图表中的大面积区域由传说本身占据.将它分成2或3列将真正有助于原因,同时将图例保持在图表的底部.我也试过了,legend.direction但是这个命令在一行中显示了图例,这是不可取的,除非我可以将它传播到2-3行.
opts(title=plotName,legend.position='bottom',legend.direction="horizontal")
Run Code Online (Sandbox Code Playgroud)
提前谢谢,Munish
这个问题提示了以下问题:有没有办法查看调用堆栈中的特殊基本函数?
例如,创建一个在退出时返回调用堆栈的函数:
myFun <- function(obj){
on.exit(print(sys.calls()))
return(obj)
}
Run Code Online (Sandbox Code Playgroud)
调用此函数并将其结果分配给对象使用assign避免使用特殊的原始函数:
> assign("myObj",myFun(4))
[[1]]
assign("myObj", myFun(4))
[[2]]
myFun(4)
Run Code Online (Sandbox Code Playgroud)
但是使用赋值运算符,它会被排除在堆栈之外
> `<-`(myObj, myFun(6))
[[1]]
myFun(6)
Run Code Online (Sandbox Code Playgroud)
当然,它可能不是所有的共同希望看到在调用栈中的赋值运算符,而其他功能,如rep和log也得到隐蔽
我有一个包含许多列的数据框,包括Quarter和CustomerID.在此我想找出的唯一组合Quarter和CustomerID.
例如:
masterdf <- read.csv(text = "
Quarter, CustomerID, ProductID
2009 Q1, 1234, 1
2009 Q1, 1234, 2
2009 Q2, 1324, 3
2009 Q3, 1234, 4
2009 Q3, 1234, 5
2009 Q3, 8764, 6
2009 Q4, 5432, 7")
Run Code Online (Sandbox Code Playgroud)
我想要的是:
FilterQuarter UniqueCustomerID
2009 Q1 1234
2009 Q2 1324
2009 Q3 8764
2009 Q3 1234
2009 Q4 5432
Run Code Online (Sandbox Code Playgroud)
在R中如何做到这一点?我尝试过unique功能,但它不能正常工作.
我在用
plot3d(x,y,z, col=test$color, size=4)
Run Code Online (Sandbox Code Playgroud)
绘制我的数据集R的3D散点图,但rgl该size说法只需要一个尺寸.
是否可以为每个数据点设置不同的大小,可能是另一个库,还是有一个简单的解决方法?
谢谢你的想法!
在RI中有一个带有一些缺失值的数据框,因此该read.table()函数使用NAs而不是空白单元格.
我写了这个:
a <- sample(1000:50000000, size=120, replace=TRUE)
values <- matrix(a, nrow=6, ncol=20)
mtx <- cbind.data.frame(values, c(rep(NA),6))
mtx <- apply(mtx, 2, function(x){
if (x==NA) sample(100:500, replace=TRUE, size=nrow(mtx)) else (x)})
Run Code Online (Sandbox Code Playgroud)
但我有这个错误:
Error in if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
missing value where TRUE/FALSE needed
In addition: Warning message:
In if (x == NA) sample(100:500, replace = TRUE, size = nrow(mtx)) else (x) :
the condition has length > 1 and …Run Code Online (Sandbox Code Playgroud) 我有
str=c("00005.profit", "00005.profit-in","00006.profit","00006.profit-in")
Run Code Online (Sandbox Code Playgroud)
而且我想得到
"00005.profit" "00006.profit"
Run Code Online (Sandbox Code Playgroud)
如何grep在R中实现此目的?
请让我知道可以重新排列数据的"R代码"
AA 100 NA
BB 200 300
CC 300 NA
DD 100 400
Run Code Online (Sandbox Code Playgroud)
至
AA 100 0 0 0
BB 0 200 300 0
CC 0 0 300 0
DD 100 0 0 400
Run Code Online (Sandbox Code Playgroud)
要么
100 200 300 400
AA 1 0 0 0
BB 0 1 1 0
CC 0 0 1 0
DD 1 0 0 1
Run Code Online (Sandbox Code Playgroud) 我有一个类的向量'factor':
vec <-c("1,1,1,1,1,2","2,1,2","3,3,4")
Run Code Online (Sandbox Code Playgroud)
我想得到另一个这样的矢量:
sumvec <- c(7, 5, 10)
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我在用R.
我有一个带有以下元素的向量:
myvec<- c("output.chr10.recalibrated", "output.chr11.recalibrated",
"output.chrY.recalibrated")
Run Code Online (Sandbox Code Playgroud)
我希望有选择地提取chr之前.recalibrated和之后的值并得到result.
结果:
10, 11, Y
Run Code Online (Sandbox Code Playgroud) r ×12
ggplot2 ×2
regex ×2
callstack ×1
conditional ×1
duplicates ×1
grep ×1
rgl ×1
scatter-plot ×1
unique ×1
vector ×1