使用与此类似的数据框:
set.seed(100)
df <- data.frame(cat = c(rep("aaa", 5), rep("bbb", 5), rep("ccc", 5)), val = runif(15))
df <- df[order(df$cat, df$val), ]
df
cat val
1 aaa 0.05638315
2 aaa 0.25767250
3 aaa 0.30776611
4 aaa 0.46854928
5 aaa 0.55232243
6 bbb 0.17026205
7 bbb 0.37032054
8 bbb 0.48377074
9 bbb 0.54655860
10 bbb 0.81240262
11 ccc 0.28035384
12 ccc 0.39848790
13 ccc 0.62499648
14 ccc 0.76255108
15 ccc 0.88216552
Run Code Online (Sandbox Code Playgroud)
我想在每个组中添加一个带编号的列.这样做显然不是使用R的权力:
df$num <- 1
for (i in 2:(length(df[,1]))) {
if (df[i,"cat"]==df[(i-1),"cat"]) { …Run Code Online (Sandbox Code Playgroud) 我试图重现dplyr包中的一个示例但是此错误消息.我期待看到以每种组合的频率产生的新列n.有人能告诉我我错过了什么吗?我三重检查包装是否已加载.一如既往地感谢您的帮助.
library(dplyr)
# summarise peels off a single layer of grouping
by_vs_am <- group_by(mtcars, vs, am)
by_vs <- summarise(by_vs_am, n = n())
Run Code Online (Sandbox Code Playgroud)
n()出错:不应直接调用此函数
该xlsx软件包可用于从R读取和写入Excel电子表格.不幸的是,即使对于中等大小的电子表格,java.lang.OutOfMemoryError也可能发生.特别是,
library(xlsx)
set.seed(19790801)
n_sheets <- 40
the_data <- replicate(
n_sheets,
{
n_rows <- sample(2e5, 1)
data.frame(
x = runif(n_rows),
y = sample(letters, n_rows, replace = TRUE)
)
},
simplify = FALSE
)
names(the_data) <- paste("Sheet", seq_len(n_sheets))
Run Code Online (Sandbox Code Playgroud)
(其他相关的例外也是可能的,但更罕见.)
在阅读电子表格时,有人提出了类似的问题.
使用Excel电子表格作为CSV上的数据存储介质的主要优点是,您可以在同一文件中存储多个工作表,因此我们在此处考虑每个工作表要写入一个数据框的数据框列表.此示例数据集包含40个数据框,每个数据框具有两列,最多200k行.它设计得足够大,有问题,但你可以通过改变n_sheets和改变大小n_rows.
wb <- createWorkbook()
for(i in seq_along(the_data))
{
message("Creating sheet", i)
sheet <- createSheet(wb, sheetName = names(the_data)[i])
message("Adding data frame", i)
addDataFrame(the_data[[i]], sheet)
}
saveWorkbook(wb, "test.xlsx")
Run Code Online (Sandbox Code Playgroud)
将此文件写入文件的自然方法是使用创建工作簿createWorkbook,然后循环遍历每个数据框调用createSheet和addDataFrame.最后,可以使用工作簿将文件写入文件 …
我有一个非常大的数据框,其中行作为观察,列作为遗传标记.我想创建一个新列,其中包含使用R的每个观察的选定列数的总和.
如果我有200列和100行,我想创建一个包含100行的新列,其中列为43到167列.列有1或0.新列包含每列的总和排,我将能够对具有最多遗传标记的个体进行排序.
我觉得这很接近:
data$new=sum(data$[,43:167])
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习R并想要引入一个SPSS文件,我可以在SPSS中打开它.
我试过使用read.spssfrom foreign和spss.getfrom Hmisc.两条错误消息都是相同的.
这是我的代码:
## install.packages("Hmisc")
library(foreign)
## change the working directory
getwd()
setwd('C:/Documents and Settings/BTIBERT/Desktop/')
## load in the file
## ?read.spss
asq <- read.spss('ASQ2010.sav', to.data.frame=T)
Run Code Online (Sandbox Code Playgroud)
由此产生的错误:
read.spss中的错误("ASQ2010.sav",to.data.frame = T):读取系统文件头的错误此外:警告消息:在read.spss("ASQ2010.sav",to.data.frame = T):ASQ2010.sav:位置0:字符`\ 000'(
此外,我尝试将SPSS文件保存为SPSS 7 .sav文件(之前使用的是SPSS 18).
警告消息:1:在read.spss("ASQ2010_test.sav",to.data.frame = T)中:ASQ2010_test.sav:系统文件2中遇到无法识别的记录类型7,子类型14:在read.spss中("ASQ2010_test. sav",to.data.frame = T):ASQ2010_test.sav:系统文件中遇到无法识别的记录类型7,子类型18
~.R中参数的含义是什么?
例如 plot(~.,xyz..)
我已经看到这个论点在各种情况下多次使用,并且因为在谷歌上难以有意义地搜索符号,所以我几乎没有成功.
其他人必须在将iOS项目转换为Swift 3时(或之后)收到此消息,但是当我进行Google搜索时,我得不到相关结果.
无论如何,在转换为Swift 3后,我有大约30个警告说:
表达隐含地从'UIView?'强制执行 去任何
但警告并未指出任何特定的代码行.它们仅引用存在警告的类.
有没有人对这个警告有所了解,或者我如何对它们进行沉默?
我有一个包含多个列的数据框,并希望为每个列输出一个单独的列,其中包含每行的长度.
我试图遍历列名称,并为每个列输出附加'_length'的相应列.
例如col1 | col2将转到col1 | col2 | col1_length | col2_length
我使用的代码是:
df <- data.frame(col1 = c("abc","abcd","a","abcdefg"),col2 = c("adf qqwe","d","e","f"))
for(i in names(df)){
df$paste(i,'length',sep="_") <- str_length(df$i)
}
Run Code Online (Sandbox Code Playgroud)
然而这引发了错误:
复杂赋值中的函数无效.
我能在R中以这种方式使用循环吗?
我想得到每行某些列的平均值.
我有这些数据:
w=c(5,6,7,8)
x=c(1,2,3,4)
y=c(1,2,3)
length(y)=4
z=data.frame(w,x,y)
Run Code Online (Sandbox Code Playgroud)
哪个回报:
w x y
1 5 1 1
2 6 2 2
3 7 3 3
4 8 4 NA
Run Code Online (Sandbox Code Playgroud)
我想得到某些列的意思,而不是所有列.我的问题是我的数据中有很多NA.所以如果我想要x和y的平均值,这就是我想要回来的:
w x y mean
1 5 1 1 1
2 6 2 2 2
3 7 3 3 3
4 8 4 NA 4
Run Code Online (Sandbox Code Playgroud)
我想我可以做类似的事情,z$mean=(z$x+z$y)/2但y的最后一行是NA,所以很明显我不想计算NA,我不应该除以2.我试过cumsum但当该行中有一个NA时返回NAs.我想我正在寻找能够添加所选列的内容,忽略NAs,获取没有NA的所选列的数量并除以该数字.我试过??意思和平均而且完全难倒.
ETA:还有一种方法可以为特定列添加权重吗?
我想生成一个看起来像这样的图形:

我的原始数据集看起来像这样:
> bb[sample(nrow(bb), 20), ]
IMG QUANT FIX
25663 1 1 0
7936 2 2 0
23586 3 2 0
23017 2 2 1
31363 1 3 1
7886 2 2 0
23819 3 3 1
29838 2 2 1
8169 2 3 1
9870 2 3 0
31440 2 1 0
35564 3 1 0
24066 1 2 0
12020 3 2 0
6742 3 2 0
6189 2 3 0
26692 2 3 0
1387 3 2 …Run Code Online (Sandbox Code Playgroud)