我在r中有一个数据帧,我将其子集化为两个:
p<-c(3.14,3.56,7.45,8.33,5.44,3.12,3.78,7.62,9.12,4.34,6.78,8.65,6.99)
n<-c("mQTL","mQTL","null","null","null","null","null","null","null","null","null","null","null")
s<-c(2,2,1,2,1,1,2,2,2,1,2,1,2)
g<-c("female","male","female","male","female","female","male","female","female","male","female","female","female")
df<-data.frame(n,g,s,p)
df
mQTL<-subset(df,df$n=='mQTL')
mQTL
n g s p
1 mQTL female 2 3.14
2 mQTL male 2 3.56
null<-subset(df,df$n=="null")
空
n g s p
3 null female 1 7.45
4 null male 2 8.33
5 null female 1 5.44
6 null female 1 3.12
7 null male 2 3.78
8 null female 2 7.62
9 null female 2 9.12
10 null male 1 4.34
11 null female 2 6.78
12 null female 1 8.65
13 null female 2 6.99
我想从null中随机搜索两个元素,其中每个元素都匹配基于性别(df $ g)和数字(df $ s)的两个mQTL
例如,我希望第一次随机抽取
这样的东西 n g s p
null female 2 7.62
null male 2 3.78
进行第二次随机抽签
n g s p
null female 2 9.12
null male 2 3.78
我想随机抽取5次,例如,获得5种不同的组合
我试过
null[which((mQTL$g==null$g)& (mQTL$s==null$s)),]
但它给了我一个数据框,所有这些数据框不是每个组合两个
n g s p
4 null male 2 8.33
9 null female 2 9.12
11 null female 2 6.78
13 null female 2 6.99
答案 0 :(得分:0)
尝试使用merge()
功能:
merge(mQTL, null, by.x = c("g","s"), by.y = c("g","s))
但您可能希望重命名列以使事情更清晰。
答案 1 :(得分:0)
function geo_lat_long($address) {
$address1 = str_replace(" ","+",$address);
$address1 = str_replace("&","%26",$address1);
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address1");
$json = json_decode($json);
$lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
return array('lat' => $lat, 'long' => $long);
}
要绘制5次,您运行for循环并在列表中存储绘图:
mQTL = subset(df,df$n=='mQTL')
null = subset(df,df$n=='null')
# Check if the combination of null$g and null$s matches with that of mQTL$g and mQTL$s
null$match = paste(null$g, null$s) %in% paste(mQTL$g, mQTL$s)
# Random sample of two of the matched rows
null[sample(which(null$match), 2),]
# > null[sample(which(null$match), 2),]
# n g s p match
# 13 null female 2 6.99 TRUE
# 4 null male 2 8.33 TRUE