假设我们有一个数字1.000633,我想计算小数点后的零数,直到分数中的第一个非零数字,答案应该是3.对于0.002,答案应该是2.
R中没有这样的功能可以提供帮助.我已经在包装DescTools中探索了Ndec函数,但它没有完成这项工作.
library(reshape2)
library(data.table)
library(dplyr)
library(magrittr)
library(ggplot2)
library(scales)
library(gstat)
library(DescTools)
library(sp)
#I want a colorado grid#
data("colorado.grid")
#making cordinates into spatial points dataframe#
coordinates(Gold_tracer_kri) <- ~ long_orig + lat_orig
#attempt at kriging but no grid#
lzn.kriged <- krige(Au ~ 1, Gold_tracer_kri, colorado.grid, model=lzn.fit)
lzn.kriged %>% as.data.frame %>%
ggplot(aes(long_orig=long_orig, lat_orig=lat_orig)) + geom_tile(aes(fill=var1.pred)) + coord_equal() +
scale_fill_gradient(low = "yellow", high="red") +
scale_x_continuous(labels=comma) + scale_y_continuous(labels=comma) +
theme_bw()
Run Code Online (Sandbox Code Playgroud)
data("meuse.grid")
Run Code Online (Sandbox Code Playgroud)
我正在尝试在R中使用克里金方法,但由于无法为我的数据找到网格而被卡住了.我的数据占据了美国所有的科罗拉多州,我希望能够获得一个网格来中断我的数据.与我正在关注的示例中使用的meuse.grid类似.
任何帮助,将不胜感激
我是 R 新手,我正在尝试做一些我认为应该非常简单的事情,但在线代码没有帮助。
data <- structure(list(Group = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
Time = c(1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2), mean_PctPasses = c(68.26,
60.2666666666667, 62.05, 66.3833333333333, 59.7333333333333,
69.7714285714286, 57.1888888888889, 63.8875, 61.1833333333333,
59.775, 66.2666666666667, 62.12), mean_AvgPassing = c(7.3,
7.01111111111111, 6.35, 9.26666666666667, 6.68333333333333,
8.78571428571429, 5.87777777777778, 8.3125, 7.63333333333333,
7.7, 8.38333333333334, 6.89), mean_AvgRush = c(0.3, -0.3,
3.5, 0.75, 5, 1.47142857142857, 5.71111111111111, 3.3875,
2.74, 6.6, 4.5, 5), mean_Int = c(0.2, 0.777777777777778,
0.25, …Run Code Online (Sandbox Code Playgroud) 我有一个数字向量v(已经省略了NA),并希望获得第n个最大值及其各自的频率.
我发现 http://gallery.rcpp.org/articles/top-elements-from-vectors-using-priority-queue/ 非常快.
// [[Rcpp::export]]
std::vector<int> top_i_pq(NumericVector v, unsigned int n)
{
typedef pair<double, int> Elt;
priority_queue< Elt, vector<Elt>, greater<Elt> > pq;
vector<int> result;
for (int i = 0; i != v.size(); ++i) {
if (pq.size() < n)
pq.push(Elt(v[i], i));
else {
Elt elt = Elt(v[i], i);
if (pq.top() < elt) {
pq.pop();
pq.push(elt);
}
}
}
result.reserve(pq.size());
while (!pq.empty()) {
result.push_back(pq.top().second + 1);
pq.pop();
}
return result ;
}
Run Code Online (Sandbox Code Playgroud)
但是,关系不会得到尊重.实际上我不需要索引,返回值也可以.
我想得到的是一个包含值和频率的列表,例如:
numv <- c(4.2, 4.2, 4.5, 0.1, 4.4, …Run Code Online (Sandbox Code Playgroud) 我正在尝试从包中Winsorize()使用该功能。我现在所拥有的是;lapplylibrary(DescTools)
data$col1 <- Winsorize(data$col1)
它基本上将极值替换为基于分位数的值,并替换以下数据:
> data$col1
[1] -0.06775798 **-0.55213508** -0.12338265
[4] 0.04928349 **0.47524313** 0.04782829
[7] -0.05070639 **-112.67126382** 0.12657896
[10] -0.12886632
> Winsorize(data$col1)
[1] -0.06775798 **-0.37884540** -0.12338265 0.04928349
[5] **0.26038103** 0.04782829 -0.05070639 **-0.37884540**
[9] 0.12657896 -0.12886632
Run Code Online (Sandbox Code Playgroud)
我有一个for loop可跨越data.frame的所有列做到这一点col1,col2,col3,col4,但是,我知道lapply是一个更好的选择,所以我想将它合并成一个lapply功能,但似乎无法得到它的工作。如果有人能指出我正确的方向,那将是非常感激的。
数据;
data <- structure(list(EQ.TA = c(-0.0677579847115102, -0.552135083517749,
-0.123382654164705, 0.0492834931482554, 0.475243125304193, 0.0478282913638668,
-0.050706389027946, -112.671263815473, 0.126578956975704, -0.128866322940619
), NI.EQ = c(3.64670235329765, 1.66115713369585, 0.209424623633739,
0.340430636358184, -0.248411254566261, -12.1709277350516, …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中一列填充了这样的数据,在染色体上,然后是基本位置,都在一列中.我用整数填充了剩余的V2到V5列,只是为了模拟类似的data.frame.
> test
V1 V2 V3 V4 V5
1 I.1286480 9 17 25 33
2 I.1898932 10 18 26 34
3 I.11871397 11 19 27 35
4 II.1252994 12 20 28 36
5 II.18175911 13 21 29 37
6 III.10298347 14 22 30 38
7 IV.123478912 15 23 31 39
8 V.12837471234 16 24 32 40
Run Code Online (Sandbox Code Playgroud)
与以下列中的其他数据.这是一个巨大的数据集,有115,000行.我想制作两个新列,一个包含罗马数字(I,II,III,IV,V),另一列包含罗马数字后面的数字.我遇到的问题是这是一个字符对象的向量,所以我不确定如何解析数字中的字母.我尝试使用DescTools包中的StrPos,但是
> StrPos(test$V1, "I")
[1] 1 1 1 1 1 1 1 NA
> StrPos(test$V1, "I.")
[1] 1 1 1 1 1 1 1 …Run Code Online (Sandbox Code Playgroud) 我试图计算不和谐对的数量.例如:
arg1=c("b","c","a","d")
arg2 = c("b","c","d","a")
Run Code Online (Sandbox Code Playgroud)
上面有1个不一致对(对:"a"和"d")
但是当我跑步时:
require(asbio)
sum(ConDis.matrix(arg1,arg2)==-1,na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
我收到的答案是:5(而不是正确答案 - 1)
我也尝试过:
require(RankAggreg)
require(DescTools)
xy <- table(arg1,arg2)
cd <- ConDisPairs(xy)
cd$D
Run Code Online (Sandbox Code Playgroud)
答案是5再次.
我错过了什么?