[问题] dataframe使用ifelse将符合条件的print出

楼主: melodyheyhey (rebecca_caca)   2017-12-19 00:45:20
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
想只用ifelse函式将data frame 里符合资料的印出
[程式范例]:
张贴能够重现错误的程式码,可以帮助版友更快的帮你解决问题
house = read.csv('D:/house.csv',header=TRUE,stringsAsFactors=FALSE)
head(house)
str(house)
a=house$price
if(a>5000){
print(a)
}
[环境叙述]:
R-3.4.2
执行结果如下:
house = read.csv('D:/house.csv',header=TRUE,stringsAsFactors=FALSE)
> head(house)
price unit_price measure parking parking_price floor floor2 nfloor area
1 545 35.86 15.20 0 0.0 5 25 5 A4
2 1568 41.42 37.86 0 0.0 6 36 12 A4
3 2100 34.80 53.20 1 16.9 2 4 11 A5
4 926 28.10 33.00 0 0.0 5 25 5 A11
5 1050 35.50 29.60 0 0.0 2 4 6 A11
6 750 42.47 17.66 0 0.0 2 4 3 A9
room hall bath house_age date house_type season
1 1 2 1 26.9 9903 公寓 Q1
2 3 2 2 5.9 9907 大楼 Q3
3 3 2 2 9.3 9907 大楼 Q3
4 3 2 2 26.2 9812 公寓 Q4
5 3 2 2 10.5 9902 大楼 Q1
6 2 2 1 36.7 9906 公寓 Q2
> str(house)
'data.frame': 2931 obs. of 16 variables:
$ price : int 545 1568 2100 926 1050 750 1180 1416 4110 1295 ...
$ unit_price : num 35.9 41.4 34.8 28.1 35.5 ...
$ measure : num 15.2 37.9 53.2 33 29.6 ...
$ parking : int 0 0 1 0 0 0 0 0 1 0 ...
$ parking_price: num 0 0 16.9 0 0 ...
$ floor : int 5 6 2 5 2 2 2 14 9 3 ...
$ floor2 : int 25 36 4 25 4 4 4 196 81 9 ...
$ nfloor : int 5 12 11 5 6 3 3 16 14 5 ...
$ area : chr "A4" "A4" "A5" "A11" ...
$ room : int 1 3 3 3 3 2 2 3 2 2 ...
$ hall : int 2 2 2 2 2 2 2 2 2 2 ...
$ bath : num 1 2 2 2 2 1 1 2 2 1 ...
$ house_age : num 26.9 5.9 9.3 26.2 10.5 36.7 35.5 11.2 3.9 26.5 ...
$ date : int 9903 9907 9907 9812 9902 9906 9907 9905 9907 9811 ...
$ house_type : chr "公寓" "大楼" "大楼" "公寓" ...
$ season : chr "Q1 " "Q3 " "Q3 " "Q4 " ...
> a=house$price
> if(a>5000){
+ print(a)
+ }
Warning message:
In if (a > 5000) { : 条件的长度 > 1,因此只能用其第一元素
>
谢谢大家~~
[关键字]:
选择性,也许未来有用
作者: cywhale (cywhale)   2017-12-19 01:23:00
print(a[a>5000])
作者: andrew43 (讨厌有好心推文后删文者)   2017-12-19 09:05:00
像是 house[house$price > 5000, ]
楼主: melodyheyhey (rebecca_caca)   2017-12-19 09:21:00
谢谢你们~可是有要求要用ifelse条件式印出的话要怎么写呢?
作者: HumuHumu (呼姆呼姆)   2017-12-19 10:16:00
sapply(a,function(x){ if(x>5000) print (x) })
作者: x88776544pc (龙飞五丈原)   2017-12-19 10:39:00
ifelse 跟 print 感觉不太搭 @@print(ifelse(a>5000,a,""),quote=F)print.table(na.omit(ifelse(a>5000,a,NA)))

Links booklink

Contact Us: admin [ a t ] ucptt.com