全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3955 6
2017-11-06
悬赏 10 个论坛币 已解决
QQ截图20171106214752.jpg 如图所示数据,RASTERVALUE是坡向数据的原始值,ASPECT是根据下面图片计算方法得到的,我现在想用R语言判断RASTERVALUE,自动给ASPECT赋值,如何做到呢?求大神啊
cdaspect.txt
大小:(11.45 KB)

 马上下载






QQ图片20171106214221.jpg


最佳答案

屋檐滴语 查看完整内容

library(dplyr) cdaspect = read.table("cdaspect.txt", header = T,sep=",") cdaspect %>% mutate(ASPECT = cut(RASTERVALU, breaks = c(0, seq(1, 15, 2), 16) * 22.5, labels = c(1L, 2L, 4L, 6L, 8L, 7L, 5L, 3L, 9L) ))->cdaspect cdaspect$ASPECT[which(cdaspect$ASPECT==9)]=1 试了下,这样也是可以的,为cheetahfly兄弟提供的思路点赞!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-11-6 21:53:17
library(dplyr)
cdaspect = read.table("cdaspect.txt", header = T,sep=",")
cdaspect %>%
  mutate(ASPECT = cut(RASTERVALU,
                      breaks = c(0, seq(1, 15, 2), 16) * 22.5,
                      labels = c(1L, 2L, 4L, 6L, 8L, 7L, 5L, 3L, 9L)
  ))->cdaspect
cdaspect$ASPECT[which(cdaspect$ASPECT==9)]=1

试了下,这样也是可以的,为cheetahfly兄弟提供的思路点赞!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-7 01:00:12
library(dplyr)
df %>%
  mutate(ASPECT=ifelse(
                                 (RASTERVALUE>=0,RASTERVALUE<22.5) |(RASTERVALUE>=337.5,RASTERVALUE<360),1,
                                 ifelse(RASTERVALUE>=22.5,RASTERVALUE<67.5,2,
                                        ifelse(……
                                               )
                                         )
                                     )
                               )
大题是这个思路,你参考下吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-7 08:24:16
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-7 10:00:21
屋檐滴语 发表于 2017-11-7 01:00
library(dplyr)
df %>%
  mutate(ASPECT=ifelse(
感谢提供思路,我把这个代码补充修改后
复制代码
运行报错
Error in mutate_impl(.data, dots) :
  Evaluation error: argument "no" is missing, with no default.
请问这是怎么回事啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-7 11:10:33
天涯印象 发表于 2017-11-7 10:00
感谢提供思路,我把这个代码补充修改后运行报错
Error in mutate_impl(.data, dots) :
  Evaluation e ...
不好意思,我忘了,ifelse后面的判断条件应该用括号括起来;另外,你多写了一个ifelse,事实上不是1-7之间的任何一个,你的告诉计算机是8
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群