data.table对象现在有一个:=运算符.是什么让这个运算符与所有其他赋值运算符不同?此外,它的用途是什么,它的速度有多快,什么时候应该避免?
data.table引入了:=运算符.为什么不超载< - ?
不是'你怎么......?' 但更多'你怎么......?'
如果你有一个文件有人给你200个列,并且你想将它减少到你需要分析的几个,你怎么去做?一种解决方案是否比另一种解决方
假设我们有一个包含列col1,col2到col200的数据框.如果您只想要1-100然后125-135和150-200,您可以:
dat$col101 <- NULL
dat$col102 <- NULL # etc
Run Code Online (Sandbox Code Playgroud)
要么
dat <- dat[,c("col1","col2",...)]
Run Code Online (Sandbox Code Playgroud)
要么
dat <- dat[,c(1:100,125:135,...)] # shortest probably but I don't like this
Run Code Online (Sandbox Code Playgroud)
要么
dat <- dat[,!names(dat) %in% c("dat101","dat102",...)]
Run Code Online (Sandbox Code Playgroud)
还有什么我想念的吗?我知道这是主观的,但这是你可能会潜入并开始以一种方式进行的那些细节之一,并且当有更有效的方法时会陷入习惯.就像这个问题关于哪些.
编辑:
或者,是否有一种简单的方法来创建可行的列名称向量?name(dat)不打印它们之间的逗号,你需要在上面的代码示例中,所以如果以这种方式打印名称,你到处都有空格,必须手动输入逗号...是否有命令会给你"col1","col2","col3",...作为你的输出,这样你就可以轻松抓住你想要的东西?
在RI中发现自己做了很多这样的事情:
adataframe[adataframe$col==something]<-adataframe[adataframe$col==something)]+1
这种方式有点冗长乏味.有没有办法让我
引用我想要改变的对象,比如
adataframe[adataframe$col==something]<-$self+1
Run Code Online (Sandbox Code Playgroud)
?
我已经回顾了以下两篇文章并认为他们可能会回答我的问题,尽管我很难看到如何:
1)条件替换data.frame中的值 2)创建一个函数,用一个data.frame替换来自另一个data.frame的值
话虽如此,我试图通过引用另一个不同(较短)长度的数据帧并从列"B"中提取替换值来替换一个数据帧中的NA,其中每个数据帧中列"A"的值匹配.
为了简单起见,我在下面修改了数据,尽管实际数据中的概念是相同的.仅供参考,在实际的第二个数据框中,"A"列中也没有重复.
这是第一个数据框(df1):
> df1
B C A
1 NA 2012-10-01 0
2 NA 2012-10-01 5
3 4 2012-10-01 10
4 NA 2012-10-01 15
5 NA 2012-10-01 20
6 20 2012-10-01 25
7 NA 2012-10-01 0
8 NA 2012-10-01 5
9 5 2012-10-01 10
10 5 2012-10-01 15
> str(df1)
'data.frame': 10 obs. of 3 variables:
$ B: num NA NA 4 NA NA 20 NA NA 5 5
$ C: Factor w/ …Run Code Online (Sandbox Code Playgroud)