【发布时间】:2017-06-09 12:46:38
【问题描述】:
R 初学者在这里。我有一个 data.frame,其中包含有关小跑马的信息(他们的胜利、收入、时间记录等)。我有一个子集的data.frame,其组织方式使每一行都包含马匹竞争的每个特定年份的信息。我有一个名为 Competition.age 的变量,它说明了这些马每年参加比赛的年龄。
我正在使用 summary() 函数和包 psych 中的 describe() 写下按马的年龄和性别分层的汇总统计数据。例如:
summary(Data_year[Data_year$Competition.age>="3"&
Data_year$Competition.age<="6"& Data_year$Sex=="Mare", ])
这工作得很好。但是当我尝试获得 7 到 10 年之间的范围(而不是 3 和 6 年)时,它只返回 NA。带有这行代码的str() 函数返回一个空白的变量列表——由于某种原因它不会读取数据。
我什至仅用这些年(分别为 7、8、9 和 10 年)创建了单独的子集 data.frames,并且单独地没有问题。我创建了范围为 7-8、7-9 的子集数据帧,它们很好!但是 7-10 创建了一个空的 data.frame。
任何帮助将不胜感激!!
【问题讨论】:
-
这是一个关于数据的问题,而不是代码本身。可以提供一个小的reproducible example吗?
-
Data_year$Competition.age是字符向量吗?查看/探索:"3" < "10"(结果为FALSE)但"7" < "8"给出TRUE -
@jogo 我知道你要去哪里,但是在 7-8 范围内进行子集化(尽管 Laura 没有展示她是如何做到这一点的)是有效的。
-
事实如下:
"7"不是数字。如果将数值与非数值(例如字符)进行比较,则数值将强制转换为字符,并且对字符进行比较(按字母顺序)。按字母顺序,"3"大于(之后)"10" -
示例:
age <- 1:15; sort(as.character(age))
标签: r