easyui combobox 获取选中值_【统计实战】缺失值识别与处理

7ff50daac5aebcf9e9816665ccb63bb0.png 777ac856ce94861f550b458f4eaf0031.png

关注我的,分析数据不发愁了

不信你试试

后台留言,获取统计软件

在科学研究中,缺失值通常难以避免,但处理起来又比较麻烦,很多人选择忽略缺失值,但有些时候它们会不知不觉给我们造成麻烦,学几招缺失值识别和处理的技术还是很有必要的。

1、导入数据

1.1 在Excel中按Ctrl+A把数据全部选中,然后右键点击复制。

5cfbcb81dbc9905af9f11cb442f1305d.png

1.2 把数据导入R

在Rstudio里输入:

mydata"clipboard")

2、分类变量和等级变量因子化:

mydata$sex$sex,levels=c(0,1),                  labels=c("Female","Male")) mydata$work$work,levels=c(0,1),                   labels=c("Non-work","Work"))mydata$disease$disease,levels=c(0,1),                    labels=c("Health","Disease"))mydata$bmig$bmig,levels=c(1,2,3),                   labels=c("Normalweight","Overweight","obese"),ordered= TRUE)

查看数据集和变量:

summary(mydata)str(mydata)

259f638151ff6cf9ed2f771431ec6cdb.png

3、缺失值的概况

sum(is.na(mydata))  #判断数据有多少缺失值mydata[!complete.cases(mydata),] #可用来识别矩阵或数据框中没有缺失值的行

6a3db6077cf4c721a9aae8ca104d9728.png

图示法查看缺失值:

install.packages("VIM")library(VIM)aggr(mydata, prop = FALSE, numbers = TRUE)

 930fe1944cec408b10d1994a3691b3c9.png

4、缺失值的处理

方法一:直接删除有缺失值的行

newdata<-na.omit(mydata)

 方法二:使用均值、中位数或众数填充缺失值

install.packages("Hmisc")library(Hmisc)mydata$age$age,median)  mydata$bmi$bmi,mean)  mydata$sex$sex,names(which.max(table(mydata

方法三:K最近邻法

DMwR2包中的knnImputation函数基于欧氏距离找到K个与其最近的观测数值,然后对这K个近邻的数据利用距离逆加权得到插补的值,用该值代替数据中相应的缺失值。

install.packages("DMwR2")library(DMwR2)knndata 
8560a516ca1fa024b00abaeb710d6c4b.gif 无论是均数±标准差,还是中位数(四分位数间距),还是频数(百分比),几行命令出炉,不要太爽! 文章中统计方法如何表述(干货收藏,附graphpad8.0下载) SCI论文都在用 P for trend,到底是何方神圣? ROC曲线下面积的两两比较 【ROC曲线】哪种诊断方法的准确性更好? SPSS绘制ROC曲线 d0dbd4460b28b0c2e5d6c4cd205a36cf.png扫码关注,欢迎咨询极简统计课只给你最实用的统计方法 155d2100939677447914b1ce365bf566.png
用法举例:从数据表中name字段写入VALComboBox的items,id字段写入VALComboBox的values,当从VALComboBox选择一个选项后,就可以从value属性获得相应的ID,或者写value的为某ID,VALComboBox将定位在相应的选项上;unit VALComboBox;interfaceuses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Menus, Dialogs, StdCtrls;type TValComboBox = class(TComboBox) private FValue: PString; FValues: TStrings; FOnChange: TNotifyEvent; function GetValue: string; function GetButtonValue(Index: Integer): string; procedure SetValue(const Value: string); procedure SetValues(Value: TStrings); protected procedure Change; dynamic; procedure Notification(AComponent: TComponent; Operation: TOperation); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Value: string read GetValue write SetValue; property ItemIndex; published property Values: TStrings read FValues write SetValues; property OnChange: TNotifyEvent read FOnChange write FOnChange; end;procedure Register;implementationconstructor TValComboBox.Create(AOwner: TComponent);begin inherited Create(AOwner); FValue := NullStr; FValues := TStringList.Create; style := csDropDownList;end;destructor TValComboBox.Destroy;begin DisposeStr (FValue); FValues.Free; inherited Destroy;end;procedure TValComboBox.Notification(AComponent: TComponent; Operation: TOperation);begin inherited Notification(AComponent, Operation);end;function TValComboBox.GetValue : string;begin result:=values[itemindex];end;function TValComboBox.GetButtonValue(Index: Integer): string;begin if (Index < FValues.Count) and (FValues[Index] ‘‘) then Result := FValues[Index] else if (Index < Items.Count) then Result := Items[Index] else Result := ‘‘;end;procedure TValComboBox.SetValue (const Value: string);var I : Integer;begin AssignStr(FValue, Value); if (ItemIndex < 0) or (GetButtonValue(ItemIndex) Value) then begin if (ItemIndex >= 0) then ItemIndex := -1; for I := 0 to Items.Count - 1 do begin if GetButtonValue(I) = Value then begin ItemIndex := I; break; end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值