我有一个数据框,需要按字符串对其列进行排序。
我试过这样:
# character string
a <- c("B", "E", "A", "D", "C")
# data frame
data <- data.frame(A = c(0, 0, 1), B = c(1, 1, 1), C = c(1, 0, 1), D = c(0, 0, 1), E = c(0, 1, 1))
data
# A B C D E
# 1 0 1 1 0 0
# 2 0 1 0 0 1
# 3 1 1 1 1 1
# sorting
data.sorted <- data[, order(a)]
# order of characters in data
colnames(data.sorted)
# [1] "C" "A" "E" "D" "B"
但是,排序数据框中的列顺序与原始字符串中的字符不同。
有什么办法,如何排序?
答案 0 :(得分:3)
函数order(a)
返回每个排名值所在的向量a
中的位置。因此,由于“A”(排名第一)位于a
的第三个位置, a[1]
等于3.类似地,“C”(排名第三)位于a
的第五个位置,然后a[3]
等于5.
幸运的是,由于R
使用括号的方式,您的解决方案实际上更加简单。如果您要求只看到名为“B”的列,您将获得:
> data[, "B", drop=FALSE]
B
1 1
2 1
3 1
或者如果你想要两个特定的列
> data[, c("B", "E")]
B E
1 1 0
2 1 1
3 1 1
最后,更一般地说,如果你有一个想要订购列的整个向量,那么你也可以这样做:
> data.sorted <- data[, a]
> data.sorted
B E A D C
1 1 0 0 0 1
2 1 1 0 0 0
3 1 1 1 1 1
> all(colnames(data.sorted)==a)
[1] TRUE
答案 1 :(得分:0)
var postData = {
loginId: $scope.user.id
};
$http({
method: "POST",
url: checkUserURL,
data: postData,
cache:false
});