我有一个像这样的损坏的价格表:
h1.whatwedo {
position: relative;
top:30px;
}
价格涨跌如你在第1行所见......
price
1 06.4
2 80.80
3 40.22
4 42.50
5 21.54
6 25.22
7 07.30
8 287.85
9 6.40
10 221.85
11 10.6
12 22.72
13 23.4
14 4.22
......应该......
1 06.4
...
7 07.30
......等等。
如果小数点后面的数字只有一个数字,则该数字必须首先。
例如:
价格看起来像9.90或19.00但不像09.90或00.19。所以,如果它是09.90那么实际应该是90.09。
有人有想法吗?
答案 0 :(得分:2)
这应该有效:
# Sample data
df <- read.table(text =
" price
1 06.4
2 80.80
3 40.22
4 42.50
5 21.54
6 25.22
7 47.30
8 287.85
9 6.40
10 221.85
11 10.6
12 22.72
13 23.4
14 4.22", colClasses = "character", header = T)
df$corrected_price <- sapply(strsplit(df$price, "\\."), function(x) {
if (nchar(x[2]) == 1) x <- rev(x);
paste(x, collapse = ".");
})
df;
# price corrected_price
#1 06.4 4.06
#2 80.80 80.80
#3 40.22 40.22
#4 42.50 42.50
#5 21.54 21.54
#6 25.22 25.22
#7 47.30 47.30
#8 287.85 287.85
#9 6.40 6.40
#10 221.85 221.85
#11 10.6 6.10
#12 22.72 22.72
#13 23.4 4.23
#14 4.22 4.22
或者没有sapply
的其他方法:
mat <- matrix(unlist(strsplit(df$price, "\\.")), ncol = 2, byrow = TRUE);
mat[nchar(mat[, 2]) == 1, ] <- mat[nchar(mat[, 2]) == 1, ][, 2:1];
df$corrected_price <- apply(mat, 1, paste, collapse = ".");
答案 1 :(得分:1)
我没有覆盖列var firstSet = new List<string> { "car", "bus", "boat", "plane" };
var secondSet = new List<string> { "bicycle", "car", "boat", "motorcycle" };
var secondPercentCoverageOfFirst =
(double)firstSet.Intersect(secondSet).Count() / firstSet.Count() * 100;
,因此您可以比较并查看
需要颠倒的行1 11 13 15 16 17确实是相反的。标准是以零开头的任何数字都需要反转,并且任何以分数中的一位数结尾的数字也应该相反:
a
DATA:
transform(df,b=sub("(\\b0.*)\\.(.*)|(.*)\\.(\\d\\b)","\\2\\4.\\1\\3",a))
a b
1 06.4 4.06
2 80.80 80.80
3 40.22 40.22
4 42.50 42.50
5 21.54 21.54
6 25.22 25.22
7 47.30 47.30
8 287.85 287.85
9 6.40 6.40
10 221.85 221.85
11 10.6 6.10
12 22.72 22.72
13 23.4 4.23
14 4.22 4.22
15 00.99 99.00
16 01.9 9.01
17 10.3 3.10