我想要获取表格的数据
before = data.frame(attr = c(1,30,4,6), type=c('foo_and_bar','foo_and_bar_2'))
attr type
1 1 foo_and_bar
2 30 foo_and_bar_2
3 4 foo_and_bar
4 6 foo_and_bar_2
Run Code Online (Sandbox Code Playgroud)
并使用split()上面的列" type"来得到这样的东西:
attr type_1 type_2
1 1 foo bar
2 30 foo bar_2
3 4 foo bar
4 6 foo bar_2
Run Code Online (Sandbox Code Playgroud)
我提出了一些令人难以置信的复杂问题,涉及某种形式的apply工作,但我已经错了.这似乎太复杂了,不是最好的方式.我可以使用strsplit如下,但不清楚如何将其恢复到数据框中的2列.
> strsplit(as.character(before$type),'_and_')
[[1]]
[1] "foo" "bar"
[[2]]
[1] "foo" "bar_2"
[[3]]
[1] "foo" "bar"
[[4]]
[1] "foo" "bar_2"
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何指示.我还没有完全理解R列表.
我需要绘制一个显示计数的条形图和一个在一个图表中显示速率的折线图,我可以分别做两个,但是当我把它们放在一起时,我的第一层的比例(即geom_bar)与第二层重叠层(即geom_line).
我可以将轴geom_line向右移动吗?
是否可以对两个没有相同列的数据帧进行行绑定?我希望保留绑定后不匹配的列.
.RData,.Rda和.Rds文件之间的主要区别是什么?
进一步来说:
假设我在R中有一个日期,其格式如下.
date
2012-02-01
2012-02-01
2012-02-02
Run Code Online (Sandbox Code Playgroud)
在R中是否有任何方法可以添加与日期相关的星期几的另一列?数据集非常大,因此手动完成并进行更改是没有意义的.
df = data.frame(date=c("2012-02-01", "2012-02-01", "2012-02-02"))
Run Code Online (Sandbox Code Playgroud)
因此,在添加日期之后,它最终会看起来像:
date day
2012-02-01 Wednesday
2012-02-01 Wednesday
2012-02-02 Thursday
Run Code Online (Sandbox Code Playgroud)
这可能吗?任何人都可以指向我一个允许我这样做的包吗?只是尝试按日期自动生成日期.
假设我们有一个包含多个data.csv文件的文件夹,每个文件包含相同数量的变量,但每个变量包含不同的时间.R中有没有办法同时导入它们而不必单独导入它们?
我的问题是我有大约2000个数据文件要导入,只需使用代码就可以单独导入它们:
read.delim(file="filename", header=TRUE, sep="\t")
Run Code Online (Sandbox Code Playgroud)
不是很有效率.
我在Windows上运行R,而不是管理员.当我安装包时,以下命令不起作用:
> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
Run Code Online (Sandbox Code Playgroud)
要安装软件包,我必须指定一个库位置:
install.packages("zoo", lib="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
要加载包,我还必须指定库位置:
library("zoo", lib.loc="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
所有这一切C:/software/Rpackages都没问题,但我想知道是否可以以某种方式添加到库路径,因此不必每次都输入它.
当我在网上搜索时,我发现一种方法是编辑Rprofile.site文件并添加行
.libPaths("C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
但是,在执行此操作并启动RStudio之后,这就是我得到的输出
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
Run Code Online (Sandbox Code Playgroud)
在.libPaths我加入命令Rprofile.site似乎并没有有任何影响!为什么会这样?或者更重要的是,如何解决问题以便我可以在不输入库位置的情况下安装和加载包?
注意:如果我启动RStudio,.libPaths()命令似乎按预期工作
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
Run Code Online (Sandbox Code Playgroud)
这不奇怪吗?
我在R中遇到了很大的性能问题.我编写了一个迭代data.frame对象的函数.它只是添加一个新列data.frame并积累一些东西.(操作简单).将data.frame有大约850K行.我的电脑仍在工作(现在大约10小时),我不知道运行时间.
dayloop2 <- function(temp){
for (i in 1:nrow(temp)){
temp[i,10] <- i
if (i > 1) {
if ((temp[i,6] == temp[i-1,6]) & (temp[i,3] == temp[i-1,3])) {
temp[i,10] <- temp[i,9] + temp[i-1,10]
} else {
temp[i,10] <- temp[i,9]
}
} else {
temp[i,10] <- temp[i,9]
}
}
names(temp)[names(temp) == "V10"] <- "Kumm."
return(temp)
}
Run Code Online (Sandbox Code Playgroud)
有什么想法如何加快这个操作?
我在一个关于回归建模的教程中看到了以下命令:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Run Code Online (Sandbox Code Playgroud)
这个命令究竟做了什么,~(tilde)在命令中的作用是什么?