我有一个像这样的数据帧:
d <- data.frame(cbind(x=1, y=1:10, z=c("apple","pear","banana","A","B","C","D","E","F","G")), stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
我想从这个数据框中删除一些行,具体取决于列z的内容:
new_d <- d[-grep("D",d$z),]
Run Code Online (Sandbox Code Playgroud)
这很好用; 第7行现已删除:
new_d
x y z
1 1 1 apple
2 1 2 pear
3 1 3 banana
4 1 4 A
5 1 5 B
6 1 6 C
8 1 8 E
9 1 9 F
10 1 10 G
Run Code Online (Sandbox Code Playgroud)
但是,当我使用grep搜索列z中不存在的内容时,它似乎删除了数据帧的所有内容:
new_d <- d[-grep("K",d$z),]
new_d
[1] x y z
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
我想以这种或其他方式搜索和删除行,即使我搜索的字符串不存在.怎么去这个?
我想使用plot3d()(rgl)绘制具有3维的MDS分析的结果.数据和代码如下所示:
threedim$points
[,1] [,2] [,3] [,4]
Dutch -6.45931417 -2.1589222 -5.829244 -0.4891066
German -7.27770201 0.2666916 -2.198595 6.8658602
Albanian 4.11799731 0.6810336 11.356935 -2.2623921
Armenian 13.58431670 21.6527626 -2.245146 6.3506665
French -0.24170759 -0.8579159 14.197611 -0.1871443
threedim$points[,1] -> x
threedim$points[,2] -> y
threedim$points[,3] -> z
library(rgl)
plot3d(x,y,z)
text(c("Dutch","German","Albanian","Armenian","French"))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
"警告信息:在xy.coords(x,y,recycle = TRUE):由强制引入的NAs"
我究竟做错了什么?
我在ggplot2中制作堆积条形图时遇到一些问题.我知道如何使用barplot()创建一个,但我想使用ggplot2,因为很容易使条形高度相同(如果我没有弄错的话,'position ='fill'').
我的问题是我有多个变量,我想在彼此之上绘制; 我的数据看起来像这样:
dfr <- data.frame(
V1 = c(0.1, 0.2, 0.3),
V2 = c(0.2, 0.3, 0.2),
V3 = c(0.3, 0.6, 0.5),
V4 = c(0.5, 0.1, 0.7),
row.names = LETTERS[1:3]
)
Run Code Online (Sandbox Code Playgroud)
我想要的是在X轴上具有类别A,B和C的图,并且对于每个图,V1,V2,V3和V4的值在Y轴上彼此堆叠.我见过的大多数图表只在Y轴上绘制了一个变量,但我确信可以用某种方式做到这一点.
我怎么能用ggplot2做到这一点?谢谢!
我有一个非常简单的问题,我无法找到一个直截了当的答案.我有一个看起来像这样的data.frame:
df3 <- data.frame(x=c(1:10),y=c(5:14),z=c(25:34))
ID x y z
1 1 5 25
2 2 6 26
3 3 7 27
etc.
Run Code Online (Sandbox Code Playgroud)
我希望将每个列中的不同值"粘贴"在一起,以便它们形成单个组合值,如下所示:
ID x+y+z
1 1525
2 2626
3 3727
Run Code Online (Sandbox Code Playgroud)
我确信这很容易做到,但我不知道怎么做!
我有一个带有空单元格的数据框,我将其分成一个列表:
df <- data.frame(c("q","w","","r","t","y"),c("a","b","","d","e","f"),c("x","c","v","b","","m"))
colnames(df) <- c("qwerty","abc","bnm")
rownames(df) <- c("1a","1b","1c","1d","1e","1f")
list <- lapply(df, as.data.frame)
for(i in 1:length(list)){ rownames(list[[i]]) <- rownames(df) }
Run Code Online (Sandbox Code Playgroud)
但是,当我从列表的元素之一中删除空行时,该元素的行名将被删除:
list[[1]] <- list[[1]][list[[1]] != "",]
rownames(list[[1]])
NULL
Run Code Online (Sandbox Code Playgroud)
如何防止这种情况发生?
我想为世界色彩调查所使用的芯片制作孟塞尔色彩图表。它应该看起来像这样:
需要的信息可以在WCS页面上找到,这里,我采取以下步骤:
library(munsell) # https://cran.r-project.org/web/packages/munsell/munsell.pdf
library(ggplot2)
# take the "cnum-vhcm-lab-new.txt" file from: https://www1.icsi.berkeley.edu/wcs/data.html#wmt
# change by replacing .50 with .5 removing .00 after hue values
WCS <- read.csv("cnum-vhcm-lab-new.txt", sep = "\t", header = T)
WCS$hex <- mnsl2hex(hvc2mnsl(hue = WCS$MunH, value = ceiling(WCS$MunV), chroma = WCS$C), fix = T)
# this works, but the order of tiles is messed up
ggplot(aes(x=H, y=V, fill=hex), data = WCS) +
geom_tile(aes(x=H, y=V), show.legend = F) +
scale_fill_manual(values = WCS$hex) +
scale_x_continuous(breaks = …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据集:
CATA 1 10101
CATA 2 11101
CATA 3 10011
CATB 1 10100
CATB 2 11100
CATB 3 10011
Run Code Online (Sandbox Code Playgroud)
等等
我想将这些不同的行组合成一个长行,如下所示:
CATA 101011110110011
CATB 101001110010011
Run Code Online (Sandbox Code Playgroud)
我已尝试使用melt()然后dcast(),但它似乎不起作用.有没有人有一些简单的代码来做到这一点?
我有一个data.frames列表,如下所示:
df=data.frame(
data_id=rep(LETTERS[1:10],each=1),
data_value=c(1,2,2,3,3,2,3,1,1,3))
df2=data.frame(
data_id=rep(LETTERS[1:10],each=1),
data_value=c(2,1,3,1,1,1,2,1,2,1))
df3=data.frame(
data_id=rep(LETTERS[1:10],each=1),
data_value=c(2,2,3,3,1,2,2,1,2,3))
df.list <- list(df, df2, df3)
Run Code Online (Sandbox Code Playgroud)
单个data.frame看起来像这样:
data_id data_value
1 A 1
2 B 2
3 C 2
4 D 3
5 E 3
6 F 2
7 G 3
8 H 1
9 I 1
10 J 3
Run Code Online (Sandbox Code Playgroud)
我想要计算每个唯一值出现在data_value中的频率.我可以做这个:
for(i in 1:length(df.list)){
daply(df.list[[i]], .(df.list[[i]]$data_value), nrow) -> freq
}
Run Code Online (Sandbox Code Playgroud)
这给了我频率计数(在这种情况下只是最后一个,对于df3):
1 2 3
2 5 3
Run Code Online (Sandbox Code Playgroud)
我的实际数据集要大得多,所以我不能在这里发布.然而,它具有完全相同的结构.问题是,当我尝试获取实际数据集的频率计数时,我收到以下错误消息:
Error in dim(out_array) <- out_dim : dims [product 0] do not match the length …Run Code Online (Sandbox Code Playgroud)