按以下方式阅读数据
data<-read.csv("userStats.csv", sep=",", header=F)
我试图在特定位置选择一个元素。
数据示例(前五行)如下(V2是日期,V3是星期几):
V1 V2
1 00002781A2ADA816CDB0D138146BD63323CCDAB2 2010-09-04
2 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-04
3 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-07
4 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-08
5 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-17
V3 V4 V5 V6 V7 V8 V9
1 Saturday 2 2 615 1 1 47
2 Saturday 2 2 77 1 1 43
3 Tuesday 1 3 201 1 1 117
4 Wednesday 1 1 44 1 1 74
5 Friday 1 1 3 1 1 18
我尝试按照以下方式在第一行中将第6列与第9列分开:
data[1,6]/data[1,9]
但是它返回了一个错误
[1] NA
Warning message:
In Ops.factor(data[1, 6], data[1, 9]) : / not meaningful for factors
然后我尝试只选择一个元素
> data[2,9]
[1] 43
11685 Levels: 0 1 2 3 ... 55311
但不知道这些级别是什么以及导致错误的原因。有谁知道如何在特定位置数据[行,列]中选择元素?
谢谢!
答案 0 :(得分:3)
R中的标准建模数据结构是data.frame
。
data.frame
个对象可以包含多种类型:numeric
,character
,factor
,...
现在,当通过read.csv()
等人阅读数据时,可以被stringsAsFactors
选项的默认值所咬。我假设数据中的至少行有文本,所以R决定将其解码为因子而 presto!你不再能对列进行直接的数学运算
简而言之,在所有列上执行summary(data)
和/或class()
扫描。根据需要进行转换,或将stringsAsFactors
变量转换为其他值或两者。
一旦您的数据是数字,您可以根据需要进行分割,切片,骰子......
答案 1 :(得分:3)
我最喜欢检查变量类的工具是str()
。
您所拥有的是一个数据框,并且您尝试使用的至少一个列是一个因素。请参阅Dirk关于如何更改列类的答案。
命令
data[1,6]/data[1,9]
选择第六列第一行中的值,并除以第九列第一行中的值。这是你想要的吗?如果要使用整个列(而不仅仅是第一行)中的值,则应编写
data[6] / data[9]
或
data[, 6] / data[, 9]
两个参数对于data.frames都是等效的。