我有两个大数据框,一个(df1)有这个结构
chr init
1 12 25289552
2 3 180418785
3 3 180434779
Run Code Online (Sandbox Code Playgroud)
另一个(df2)有这个
V1 V2 V3
10 1 69094 medium
11 1 69094 medium
12 12 25289552 high
13 1 69095 medium
14 3 180418785 medium
15 3 180434779 low
Run Code Online (Sandbox Code Playgroud)
我试图做的是添加列V3的df2到df1,来获得突变的信息
chr init Mut
1 12 25289552 high
2 3 180418785 medium
3 3 180434779 low
Run Code Online (Sandbox Code Playgroud)
我正在尝试将两者加载到R中,然后使用匹配进行for循环,但它不起作用.你知道有什么特别的方法吗?我也愿意使用awk或类似的东西
我有2个数据帧:
dat:1900个隐含的9个变量
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 V_P50P50_Q3 chr12 106642383 106642395 + 18.1425 4.03e-08 0.0515 GGGGGACTCCCCC
2 V_P50RELAP65_Q5_01 chr8 142276666 142276677 - 16.6429 2.51e-07 0.2780 GGGATTTCCCAC
3 V_RELA_Q6 chr22 51020067 51020078 - 15.9395 2.71e-07 0.3350 GGGAATTTCCCC
4 V_NFKB_Q6_01 chr14 98601454 98601469 + 17.0684 3.08e-07 0.236 GGAGTGGAAATTCC
5 V_CREL_Q6 chr22 51020068 51020079 - 16.1165 3.19e-07 0.4050 AGGGAATTTCCC
Run Code Online (Sandbox Code Playgroud)
dat.markov:986个变量的1486个障碍物
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 V_NFKB_Q6_01 chr14 98601454 98601469 + 17.2212 1.33e-07 0.146 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在两个表之间进行复杂的非equi连接.我在最后一次使用R2016的演示中受到启发(https://channel9.msdn.com/events/useR-international-R-User-conference/useR2016/Efficient-in-memory-non-equi-joins-using-datatable这使我相信它将是data.table的合适任务.我的表1看起来像:
library(data.table)
sp <- c("SAB","SAB","SAB","SAB","EPN","EPN","BOP","BOP","BOP","BOP","BOP","PET","PET","PET")
dbh <- c(10,12,16,22,12,16,10,12,14,20,26,12,16,18)
dt1 <- data.table(sp,dbh)
dt1
sp dbh
1: SAB 10
2: SAB 12
3: SAB 16
4: SAB 22
5: EPN 12
6: EPN 16
7: BOP 10
8: BOP 12
9: BOP 14
10: BOP 20
11: BOP 26
12: PET 12
13: PET 16
14: PET 18
Run Code Online (Sandbox Code Playgroud)
这是dbh的树木列表.我的第二个表(下面)给出了一个通用表,它为每个树种提供了一系列dbh来对大小类或树进行分类:
gr_sp <- c("RES","RES","RES","RES","RES","RES", "DEC", "DEC", "DEC", "DEC", "DEC", "DEC")
sp <- c("SAB","SAB", "SAB", "EPN", "EPN", "EPN", "BOP", "BOP", "BOP", "PET", "PET", …Run Code Online (Sandbox Code Playgroud) 我有几行数据(标签分隔).我想找到与每行中两列(第3和第4列)中的元素匹配的行,其中包含另外两列(第10和第11列).例如,在行1中,列3和4中的95428891和95443771 匹配行19中的列10和11中的元素.同样,倒数也是如此.中的元素的列3和4中第19行也匹配元件列10和11在第1行.我需要能够遍历每一行并输出相应匹配的行索引.有时可能只有一列匹配而不是两者(因为有时会有重复的数字),但我只需要选择两列匹配的行以及相互匹配的行.因此,输出具有倒数匹配的行索引是个好主意,例如,1和19作为制表符分隔值(可能在不同的data.frame对象中).并且没有相互匹配的行可以单独输出.我试图在R中实现它来运行几行数据.
1313 chr2 95428891 95443771 14880 chr2:96036782 205673 + chr2 96036782 96052481
1313 chr2 95428896 95443771 14875 chr2:97111880 205214 - chr2 97111880 97127588
1313 chr2 95443771 95526464 82693 chr2:95609272 1748861 - chr2 95609272 95691902
1313 chr2 95477143 95486318 9175 chr2:97616847 177391 + chr2 97616847 97626039
1313 chr2 95486323 95521267 34944 chr2:97035158 268351 + …Run Code Online (Sandbox Code Playgroud) 我是R的新手,这是我关于stackoverflow的第一个问题。
我在尝试
示例数据:
id code date_down date_up
1: 1 p 2019-01-01 2019-01-02
2: 1 f 2019-01-02 2019-01-03
3: 2 f 2019-01-02 2019-01-02
4: 2 p 2019-01-03 <NA>
5: 3 p 2019-01-04 <NA>
6: 4 <NA> 2019-01-05 2019-01-05
7: 5 f 2019-01-07 2019-01-08
8: 5 p 2019-01-07 2019-01-08
9: 5 p 2019-01-09 2019-01-09
10: 6 f 2019-01-10 2019-01-10
11: 6 p 2019-01-10 2019-01-10
12: 6 p 2019-01-10 2019-01-11
Run Code Online (Sandbox Code Playgroud)
我想做的是
iddate_up第一行,code …我想将两个长度不同且值部分相等的向量写入一个数据帧。相同的值应写入同一行。
ef1 <- c('A1', 'A2', 'B0', 'B1', 'C1', 'C2')
ef2 <- c('A1', 'A2', 'C1', 'C2', 'D1', 'D2')
Run Code Online (Sandbox Code Playgroud)
如果我将它们写在一个数据框中,它看起来像这样:
df <- data.frame (ef1, ef2)
> df
ef1 ef2
1 A1 A1
2 A2 A2
3 B0 C1
4 B1 C2
5 C1 D1
6 C2 D2
Run Code Online (Sandbox Code Playgroud)
但我想要的是这个:
> df
ef1 ef2
1 A1 A1
2 A2 A2
3 B0 NA
4 B1 NA
5 C1 C1
6 C2 C2
7 NA D1
8 NA D2
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助。
说我有两张桌子:
library(data.table)
set.seed(1)
tab1 <- data.table(
let = rep(letters[1:2], each = 3),
num = rep(1:3, 2),
val = rnorm(6),
key = c("let", "num")
)
tab2 <- data.table(
let = rep(letters[1:2], each = 2),
num = rep(1:2, 2),
val = rnorm(4),
key = c("let", "num")
)
Run Code Online (Sandbox Code Playgroud)
表格1:
> tab1
let num val
1: a 1 -0.6264538
2: a 2 0.1836433
3: a 3 -0.8356286
4: b 1 1.5952808
5: b 2 0.3295078
6: b 3 -0.8204684
Run Code Online (Sandbox Code Playgroud)
表2:
> tab2
let num …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据框:
X Y Z T
1 2 4 2
3 2 1 4
7 5 NA 3
Run Code Online (Sandbox Code Playgroud)
经过几个步骤(不重要哪一个)我得到了这个df:
X Y Z T
1 2 4 2
3 2 NA 4
7 5 NA 3
Run Code Online (Sandbox Code Playgroud)
我想获得一个新的数据帧,只有在步骤中没有改变的行; 结果将是这一个:
X Y Z T
1 2 4 2
7 5 NA 3
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
之前也问过类似的问题,但没有明确的通用答案。(Joseph Adler 的实验不再在网上,他的书只说“编写一个 S4 类”。)
假设有一个包含多个索引的大型查找表。假设要查找的值大小适中。即使是 R 合并也很慢。下面是一个例子:
{
L <- 100000000 ## only 100M entries for 1GB*4 of int data
lookuptable <- data.frame( i1=sample(1:L), i2=sample(1:L), v1=rnorm(L), v2=rnorm(L) )
NLUP <- 10 ## look up only 10+1 values in large table
vali <- sample(1:L, NLUP)
lookmeup <- data.frame( i1= c(lookuptable[vali,1], -1),
i2= c(lookuptable[vali,2],-1), vA=rnorm(11) )
rm(vali); rm(L)
}
## I want to speed this up---how?
system.time( merge( lookmeup, lookuptable, by.x=c("i1","i3"), by.y=c("i1","i2"),
all.x=T, all.y=F, sort=F ) )
Run Code Online (Sandbox Code Playgroud)
(试试吧!在我的 2019 iMac 上 …
我想基于名字,姓氏和年份组合两个表,并创建一个新的二进制变量,指示表1中的行是否存在于第二个表中.
第一张桌子是一个赛季NBA球员某些属性的面板数据集:
firstname<-c("Michael","Michael","Michael","Magic","Magic","Magic","Larry","Larry")
lastname<-c("Jordan","Jordan","Jordan","Johnson","Johnson","Johnson","Bird","Bird")
year<-c("1991","1992","1993","1991","1992","1993","1992","1992")
season<-data.frame(firstname,lastname,year)
firstname lastname year
1 Michael Jordan 1991
2 Michael Jordan 1992
3 Michael Jordan 1993
4 Magic Johnson 1991
5 Magic Johnson 1992
6 Magic Johnson 1993
7 Larry Bird 1992
8 Larry Bird 1992
Run Code Online (Sandbox Code Playgroud)
第二个data.frame是选择参加全明星赛的NBA球员的一些属性的面板数据集:
firstname<-c("Michael","Michael","Michael","Magic","Magic","Magic")
lastname<-c("Jordan","Jordan","Jordan","Johnson","Johnson","Johnson")
year<-c("1991","1992","1993","1991","1992","1993")
ALLSTARS<-data.frame(firstname,lastname,year)
firstname lastname year
1 Michael Jordan 1991
2 Michael Jordan 1992
3 Michael Jordan 1993
4 Magic Johnson 1991
5 Magic Johnson 1992
6 Magic Johnson 1993
Run Code Online (Sandbox Code Playgroud)
我想要的结果如下:
firstname lastname year allstars
1 Michael …Run Code Online (Sandbox Code Playgroud)