楼主: bens220
24557 9

[问答] R软件中,代码中加感叹号和减号的区别是啥? [推广有奖]

  • 2关注
  • 0粉丝

硕士生

88%

还不是VIP/贵宾

-

威望
0
论坛币
132 个
通用积分
25.7524
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1054 点
帖子
80
精华
0
在线时间
229 小时
注册时间
2012-11-10
最后登录
2024-2-19

楼主
bens220 在职认证  发表于 2016-10-5 18:28:24 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如例子:
  1. data[-1,]
复制代码
#表示删除倒数第一行

而如下面的代码:
  1. data[!duplicated(data$var),]
复制代码
#表示按照var去重

问题:“!” 和 “-”究竟怎么用?有什么差别呢?


二维码

扫码加我 拉你入群

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

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

关键词:r软件 感叹号 duplicate Data VaR 感叹号 软件

沙发
飞天玄舞6 发表于 2016-10-5 23:57:03 |只看作者 |坛友微信交流群
data[-1,]这是删除第一行,减几表示删除第几行;而“!” 表示“与、或、非”中的“非”的意思,也就是说data[!duplicated(data$var),]表示为抽取data数据中不属于duplicated(data$var)的行。

使用道具

藤椅
bens220 在职认证  发表于 2016-10-6 11:31:57 |只看作者 |坛友微信交流群
飞天玄舞6 发表于 2016-10-5 23:57
data[-1,]这是删除第一行,减几表示删除第几行;而“!” 表示“与、或、非”中的“非”的意思,也就是说da ...
谢谢!如果想按照变量var1删除特定观测值的话,使用以下哪个代码是正确的呢?还是都有问题?
  1. new_data <- data[-((var2==1)|(var3==0)),]
复制代码
  1. new_data <- data[!((var2==1)|(var3==0)),]
复制代码

使用道具

板凳
飞天玄舞6 发表于 2016-10-6 11:59:28 |只看作者 |坛友微信交流群
因为不知道你的数据结构是什么样的,所以我无法回答你的代码正确与否。给你举个例子:> data<-data.frame(name=c("a","b","d"),var1=c(2,4,6),var2=c(3,7,9))
> data
  name var1 var2
1    a    2    3
2    b    4    7
3    d    6    9
> # if you want to delete the row of “a” which in the column "name", you should:
> data[-which(data$name=="a"),]
  name var1 var2
2    b    4    7
3    d    6    9
> # if you want to delete the row of var1=4 or var2=3, you should use:
> data[-which(data$var1==4|data$var2==3),]
  name var1 var2
3    d    6    9

对列,同理。
strive for the best, prepare for the worst.

使用道具

报纸
飞天玄舞6 发表于 2016-10-6 12:02:35 |只看作者 |坛友微信交流群
倒数第三行中data后有个美元符号再加变量,不知为什么一复制就没有了

使用道具

地板
bens220 在职认证  发表于 2016-10-6 14:11:36 |只看作者 |坛友微信交流群
飞天玄舞6 发表于 2016-10-6 12:02
倒数第三行中data后有个美元符号再加变量,不知为什么一复制就没有了
谢谢,但是我在使用这个命令时遇到了一个问题。我用得数据是hflights包中的hflights数据。代码如下:
  1. library(hflights)
  2. data("hflights")
  3. names(hflights)
复制代码
可以看到,hflights数据中一共包含21个变量。而当我删除一部分观测值时:
  1. flight_test <- hflights[-which(Month==1 & DayOfWeek==1)]
  2. names(flight_test)
复制代码
可以看到,新的flight_test数据中只剩下了18个变量,非常奇怪,我只是删除观测值,并没有删除变量啊?请问这是怎么回事呢?

使用道具

7
飞天玄舞6 发表于 2016-10-6 15:48:55 |只看作者 |坛友微信交流群
  1. flight_test <- hflights[-which(hflights$Month==1 & hflights$DayOfWeek==1),]
复制代码

使用道具

8
bens220 在职认证  发表于 2016-10-6 16:03:21 |只看作者 |坛友微信交流群
飞天玄舞6 发表于 2016-10-6 15:48
明白了,我太粗心了,谢谢!

使用道具

9
bens220 在职认证  发表于 2016-10-6 16:07:17 |只看作者 |坛友微信交流群
飞天玄舞6 发表于 2016-10-6 15:48
另外,我发现把which去掉也能运行,但是结果和上面的不太一样,请问这个是什么意思?
  1. flight_test <- hflights[-(hflights$Month==1 & hflights$DayOfWeek==1),]
复制代码

使用道具

10
飞天玄舞6 发表于 2016-10-6 16:24:52 |只看作者 |坛友微信交流群
bens220 发表于 2016-10-6 16:07
另外,我发现把which去掉也能运行,但是结果和上面的不太一样,请问这个是什么意思?
这个我不知道什么意思,不过你可以用小数据试一试

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 16:01