我在这里问了类似这样的问题,并且那里提到的解决方案在那里说的问题工作得很好,但是这个问题比较简单,更难.
我有这样的数据表.
ID1 member
1 a parent
2 a child
3 a parent
4 a child
5 a child
6 b parent
7 b parent
8 b child
9 c child
10 c child
11 c parent
12 c child
Run Code Online (Sandbox Code Playgroud)
我想分配一个如下所示的序列,记住ID1和成员列.
ID1 member sequence
1 a parent 1
2 a child 2
3 a parent 1
4 a child 2
5 a child 3
6 b parent 1
7 b parent 1
8 b …Run Code Online (Sandbox Code Playgroud) 我一直在使用这两种方法来交替使用R中数据框的数据.
方法1
subset_df <- df[which(df$age>5) , ]
方法2
subset_df <- subset(df, age>5)
我有2个问题属于这些问题.
1.考虑到我有非常大的数据,哪一个更快?
这篇文章在R中对数据框进行子集化表明上述两种方法之间存在差异.其中一个准确处理NA.哪一个可以安全使用呢?
我有这样的数据表.
ID1 ID2 member
1 a x parent
2 a y child
3 a z parent
4 a p child
5 a q child
6 b x parent
7 b z parent
8 b q child
Run Code Online (Sandbox Code Playgroud)
我想分配一个如下的序列.
ID1 ID2 member sequence
1 a x parent 1
2 a y child 2
3 a z parent 1
4 a p child 2
5 a q child 3
6 b x parent 1
7 b z parent 1
8 b q child …Run Code Online (Sandbox Code Playgroud) 在使用R时,Rstudio会创建所有这些文件:
.Rhistory
.Rapp.history
.Rproj.user /
我希望git忽略这些文件,所以我将它们放在.gitignore中,并在我使用的一行中完成
*.R*
Run Code Online (Sandbox Code Playgroud)
但它也会忽略我不想要的实际.R文件.所以我尝试了下面的正则表达式,
*.R.+
Run Code Online (Sandbox Code Playgroud)
和
*.R+
Run Code Online (Sandbox Code Playgroud)
但我想在gitignore中还有一些其他等效的点(.用于单字符匹配)或加号(+用于前一个字母的一次或多次出现),我不知道.有人可以帮忙吗?
我有这样的数据表.
> dt
ID value
1 a v1
2 a v2
3 a v3
4 a v4
5 a v5
6 b v6
7 b v7
8 b v8
Run Code Online (Sandbox Code Playgroud)
我想为每个ID只选择一个值.它可以是第一个值或最后一个值.我就是这样做的.
unique_id_value_mapping <- dt[, list(new_value=head(.SD[,value],1)), by="ID"]
Run Code Online (Sandbox Code Playgroud)
但对于大型数据表(约10万行),需要花费大量时间.谁知道更快的方法呢?
更新
建议上述问题的答案很好.但是,如果我需要根据某些条件选择值,该怎么办?考虑一个数据表
> dt
ID value days
1 a v1 2
2 a v2 4
3 a v3 7 *
4 a v4 7
5 a v5 1
6 b v6 5 *
7 b v7 4
8 b v8 …Run Code Online (Sandbox Code Playgroud)