将值切换到新列中的标签
Switching values to labels in a new column
我得到了一列标记值。让我们称之为国家。
当我 运行:
attr(dat[["Country"]], "labels")
我得到下一个table:
USA Germany France UK Spain India Saudi Arabia
1 2 3 4 5 6 7
现在我得到了一个新的未标记的 int 值列。我们称它为新国家。我想将这些 int 值更改为原始 Country 列的标签。换句话说,我想以一种有效的方式从这里开始......
3
2个
2个
1个
5个
4
对此...
法国
德国
德国
美国
西班牙
英国
问题是数据框有一列 Country
,设置了属性 "labels"
。反过来,这个只是一个向量的属性设置了 "names"
属性。所以得到 "labels"
的 "names"
的步骤是:
- 获取第
Country
列的 "labels"
;
- 获取标签向量的
"names"
;
- 提取索引向量对应的名称,向量
i
。
首先阅读发布的数据。
nms <- scan(text = "USA Germany France UK Spain India 'Saudi Arabia'",
what = character())
i <- scan(text = "3 2 2 1 5 4")
现在创建一个数据集示例。
labs <- setNames(1:7, nms)
dat <- data.frame(Country = sample(letters, 7))
attr(dat[["Country"]], "labels") <- labs
并按照上述步骤提取问题的内容。
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
或者单行:
names(attr(dat[["Country"]], "labels"))[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
要看出这不依赖于标签的值,请创建第二个示例。
labs2 <- setNames(101:107, nms)
attr(dat[["Country"]], "labels") <- labs2
虽然 "labels"
不同,但相同的指令有效:
attr(dat[["Country"]], "labels")
# USA Germany France UK Spain India Saudi Arabia
# 101 102 103 104 105 106 107
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]
我得到了一列标记值。让我们称之为国家。 当我 运行:
attr(dat[["Country"]], "labels")
我得到下一个table:
USA Germany France UK Spain India Saudi Arabia
1 2 3 4 5 6 7
现在我得到了一个新的未标记的 int 值列。我们称它为新国家。我想将这些 int 值更改为原始 Country 列的标签。换句话说,我想以一种有效的方式从这里开始......
3 2个 2个 1个 5个 4
对此...
法国 德国 德国 美国 西班牙 英国
问题是数据框有一列 Country
,设置了属性 "labels"
。反过来,这个只是一个向量的属性设置了 "names"
属性。所以得到 "labels"
的 "names"
的步骤是:
- 获取第
Country
列的"labels"
; - 获取标签向量的
"names"
; - 提取索引向量对应的名称,向量
i
。
首先阅读发布的数据。
nms <- scan(text = "USA Germany France UK Spain India 'Saudi Arabia'",
what = character())
i <- scan(text = "3 2 2 1 5 4")
现在创建一个数据集示例。
labs <- setNames(1:7, nms)
dat <- data.frame(Country = sample(letters, 7))
attr(dat[["Country"]], "labels") <- labs
并按照上述步骤提取问题的内容。
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
或者单行:
names(attr(dat[["Country"]], "labels"))[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
要看出这不依赖于标签的值,请创建第二个示例。
labs2 <- setNames(101:107, nms)
attr(dat[["Country"]], "labels") <- labs2
虽然 "labels"
不同,但相同的指令有效:
attr(dat[["Country"]], "labels")
# USA Germany France UK Spain India Saudi Arabia
# 101 102 103 104 105 106 107
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]