从dataframe中随机抽取样本并输出到excel

从dataframe中随机抽取样本并输出到excel,r,R,我从数据帧a中随机抽取样本。限定符a[,1]将导出到excel中。但是我有麻烦了 str(a) 'data.frame': 2299 obs. of 5 variables: $ A : Factor w/ 2284 levels "01012223427",..: 1339 78 779 1590 1687 64 1034 633 1321 109 a[sample(a[,1],300),]->q 这导致了300个随机样本,但其中有几个是NA。有什么想

我从数据帧a中随机抽取样本。限定符a[,1]将导出到excel中。但是我有麻烦了

str(a)

'data.frame':   2299 obs. of  5 variables:
 $ A          : Factor w/ 2284 levels "01012223427",..: 1339 78 779 1590 1687 64 1034 633 1321 109 


a[sample(a[,1],300),]->q
这导致了300个随机样本,但其中有几个是NA。有什么想法吗

q[,1]->r

str(r)
 Factor w/ 2284 levels "01012223427",..: 85 1162 1886 549 1996 789 185 321 632 2273
我需要将01012223427格式的r向量输入excel,但执行write.csvr,r.csv会在列的每个单元格中生成一个包含concatenated 101012223427等的文件。我试着写下.csvas.numericr,r.csv,但对输出因子本身没有帮助。我该怎么做

-编辑

write.csv2r,300.csv,row.names=F解决了我的问题,但我仍然不确定为什么会引入NA


//M

若要将数字因子转换为数字,必须首先更改为字符,否则将获得因子的内部数字,而不是级别标签:

as.numeric(as.character(r))

NA可能是由于因子级别中的非数字字符而引入的。

若要将数字因子转换为数字,必须首先更改为字符,否则将获得因子的内部数字,而不是级别标签:

as.numeric(as.character(r))

NA可能是由于因子级别中的非数字字符而引入的。

我还将首先检查为什么有因子。在我看来,你似乎是从某个文本文件中读到的,其中要么包含空格,要么包含空格、点、标签、字母NA,。。。这会使R将整个列视为一个字符,并在使用read.csv或类似工具时将其转换为一个因子

如果您找到了它,您也知道为什么会得到NA,并且可以在将数据帧保存到文本文件之前对其进行修正。在read.table和read.csv中选中stringsAsFactors=F选项,或者在read.csv中选中as.is=T选项

接下来是一段代码:

a[sample(a[,1],300),]->q
不是在做你认为我猜的事。我会使用索引本身,类似于:

a[sample.int(dim(a)[1],300),] -> q

如果a变为数字,则上面的代码将不再工作。它将取a[,1]的值,其中一个是01012223427。因此您将得到一个错误,因为没有具有该索引号的行。此外,当将[,1]作为字符传输时,您使用的代码将中断。

我还将首先检查您为什么有一个因子。在我看来,你似乎是从某个文本文件中读到的,其中要么包含空格,要么包含空格、点、标签、字母NA,。。。这会使R将整个列视为一个字符,并在使用read.csv或类似工具时将其转换为一个因子

如果您找到了它,您也知道为什么会得到NA,并且可以在将数据帧保存到文本文件之前对其进行修正。在read.table和read.csv中选中stringsAsFactors=F选项,或者在read.csv中选中as.is=T选项

接下来是一段代码:

a[sample(a[,1],300),]->q
不是在做你认为我猜的事。我会使用索引本身,类似于:

a[sample.int(dim(a)[1],300),] -> q

如果a变为数字,则上面的代码将不再工作。它将取a[,1]的值,其中一个是01012223427。因此您将得到一个错误,因为没有具有该索引号的行。此外,当将[,1]作为字符传输时,您使用的代码也会中断。

这有助于…欣赏它//这有助于…感激它//M