Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:因子标签如何映射到data.frame中的正确值?_R_Dataframe - Fatal编程技术网

R:因子标签如何映射到data.frame中的正确值?

R:因子标签如何映射到data.frame中的正确值?,r,dataframe,R,Dataframe,编辑:包括我对文档的阅读,我仍然不清楚 我是R新手,正在玩RStudio预装的mtcarsdata.frame。我正在将cyl变量转换为因子并标记它们。我的代码是: df <- mtcars str(df) df$cyl <- factor(df$cyl, labels = c('Four cylinder', 'Six Cylinder', 'Eight Cylinder')) str(df) df$cyl str(df) “data.frame”:32 obs。在11个变量中:

编辑:包括我对文档的阅读,我仍然不清楚

我是R新手,正在玩RStudio预装的
mtcars
data.frame
。我正在将
cyl
变量转换为因子并标记它们。我的代码是:

df <- mtcars
str(df)
df$cyl <- factor(df$cyl, labels = c('Four cylinder', 'Six Cylinder', 'Eight Cylinder'))
str(df)
df$cyl str(df)
“data.frame”:32 obs。在11个变量中:
$mpg:num2122.821.418.718.1144.324.422.819.2。。。
$cyl:系数w/3“四缸”级别,…:2 2 1 3 1 2。。。
$disp:num 160 108 258 360。。。
$hp:num 110 93 110 175 105 245 62 95 123。。。
$drat:num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92。。。
$wt:num 2.62 2.88 2.32 3.21 3.44。。。
$qsec:num 16.51718.619.417。。。
$vs:num 0 1 0 1 0 1 1 1 1。。。
$am:num 11 0 0 0 0 0 0。。。
$gear:num 4 4 3 3 3 4 4 4 4。。。
$carb:num 4 1 2 1 4 2 4。。。
我的问题是:代码的
系数
部分如何正确分配标签(即
转换后表示为
1
四个圆柱
,如何正确分配原始
df
中的
4
s)。是否只是将标签按升序应用为默认行为?如果我有一个字段,比如说,有10个唯一的值,我想将其转换为因子。如何确保标签和替换值与正确的原始值相对应

?factor
访问的文档说明:

levels:x可能采用的值(作为字符串)的可选向量。默认值是as.character(x)采用的唯一值集,按x的递增顺序排序


这似乎表明标签将按原始变量值的升序应用,但我只是想确保我理解正确。

在本例中它知道,因为它将mtcars$cyl中的数值转换为字符向量
c(4,6,8,6…)->c(“4”,“6”,“8”,“8”)
,通过算术排序选择级别(“4”然后是“6”,然后是“8”;由于在调用
factor
时未指定
级别
),因此通过将
级别
进行匹配,可以找到存储在
df$cyl
中的数值。这些标签并不会真正影响因子的排序:您可以将标签“六个圆柱体”与级别“4”相匹配

作为数值(系数(c(4,6,8,6,6,4))) [1] 123221


这个链接很好地解释了因子是如何工作的,这有助于理解
stringsAsFactors=TRUE
的默认行为,但没有回答我关于
factor
的问题以及它如何将标签应用到预期值一位同事发给我的问题:我相信它回答了这个问题。我将阅读它,然后回答我自己的问题,这是否是正确的做法?因子的行为是默认行为
stringsAsFactors=TRUE
的原因。从第八段“还有一个更模糊的原因”开始,这篇文章描述了如何使用整数有效地引用字符值的查找以节省内存空间。通过字母数字排序得到了它-这是我根据文档怀疑的。你能解释一下我如何将标签“六缸”与级别“4”匹配吗(顺便说一句,这里的级别是正确的词吗?还是它的值)?这里我们给级别“4”贴上标签“五缸?”和其他各种反常现象:
因子(c(6,4,8),标签=c(“五缸?”,“四缸?”,“三缸”)[1]四缸?五缸?三缸液位:五缸?四缸?三个气缸
Ahh,duh。非常感谢-作为一个新的程序员,我知道这些东西对你来说可能听起来很愚蠢,但它对我的理解非常有帮助。
> df <- mtcars
> str(df)
'data.frame':   32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
> df$cyl <- factor(df$cyl, labels = c('Four cylinder', 'Six Cylinder', 'Eight Cylinder'))
> str(df)
'data.frame':   32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : Factor w/ 3 levels "Four cylinder",..: 2 2 1 2 3 2 3 1 1 2 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...