首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >范围桶值并使用R创建网格

范围桶值并使用R创建网格
EN

Stack Overflow用户
提问于 2017-11-18 00:58:49
回答 1查看 314关注 0票数 0

试图了解更多的R..。希望找到一种干净且易于遵循的方式来接收订单DF:

customerID Timestamp freq lat 1 1 2017-01-01 2 31.0 2 2 2017-01-01 3 90.5 3 3 2017-01-01 1 NaN 4 4 2017-01-01 1 NaN 5 1 2017-02-01 2 31.0 6 2 2017-03-01 3 90.5 7 2 2017-07-01 3 90.5

并根据lat和freq的一系列桶创建一个带有计数的网格。桶:

  • freq (1,2-4,5+)
  • lat (0-30,31-60,61+)

例如lat freq 61+ 31-60 0-30 5+ 0 0 0 2-4 3 2 0 1 0 0 2

迪普特:

代码语言:javascript
复制
> dput(orders)
structure(list(customerID = c(1L, 2L, 3L, 4L, 1L, 2L, 2L), Timestamp =             
structure(c(17167, 
17167, 17167, 17167, 17198, 17226, 17348), class = "Date"), freq = c(2L, 
3L, 1L, 1L, 2L, 3L, 3L), lat = c(31, 90.5, NaN, NaN, 31, 90.5, 
90.5)), .Names = c("customerID", "Timestamp", "freq", "lat"), row.names = 
c(NA, 7L), class = "data.frame")

更新

一直在努力..。我用cut .但不确定是不是最好的路线。不过,不知道如何完成网格。

例如:

orders$freq_range <- cut(orders$freq, breaks=c(0,1,4,100000), labels=c("1","2-4","5+"))

EN

回答 1

Stack Overflow用户

发布于 2017-11-18 05:34:20

您可以使用table获得交叉表输出:

代码语言:javascript
复制
df

customerID  Timestamp  freq   lat
1           2017-01-01  2    31.0
2           2017-01-01  3    90.5
3           2017-01-01  1      NA
4           2017-01-01  1      NA
1           2017-02-01  2    31.0
2           2017-03-01  3    90.5
2           2017-07-01  3    90.5
2           2017-07-01  5    90.5
3           2017-07-01  6   100.5

df$a<-cut(df$freq, breaks=c(0,1,4,100000), labels=c("1","2-4","5+"))

df$b <- cut(df$lat, breaks=c(0,30,60,100000), labels=c("0-30","31-60","60+"))

df

customerID  Timestamp freq   lat   a     b
 1          2017-01-01    2  31.0 2-4 31-60
 2          2017-01-01    3  90.5 2-4   60+
 3          2017-01-01    1    NA   1  <NA>
 4          2017-01-01    1    NA   1  <NA>
 1          2017-02-01    2  31.0 2-4 31-60
 2          2017-03-01    3  90.5 2-4   60+
 2          2017-07-01    3  90.5 2-4   60+
 2          2017-07-01    5  90.5  5+   60+
 3          2017-07-01    6 100.5  5+   60+

table(df$a, df$b)

       0-30 31-60 60+
  1      0     0   0
  2-4    0     2   3
  5+     0     0   2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47361387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档