我这里有这个代码:
d$ICER <- d$Delta_Cost/d$Delta_LY
我为R中的矩阵中的每一行执行此操作,现在,第一行的值为Delta_Cost
且Delta_LY
= 0
,因此ICER
为{ {1}}并给我一个值0/0
。
如何将其修改为0而不是NaN
?
答案 0 :(得分:2)
你可以这样做:
d$ICER <- d$Delta_Cost/d$Delta_LY
d$ICER[is.na(d$ICER)] <- 0
答案 1 :(得分:0)
您可以使用ifelse
:
d$ICER <- ifelse(!d$Delta_Cost, 0, d$Delta_Cost / d$Delta_LY)
答案 2 :(得分:0)
虽然这里的两个答案都提供了解决问题的完全有效的方法,但问题是它们都没有提供警告,不要将NaN更改为0,所以现在就去。
如果您计划对数据进行任何统计分析,天真地将NaN转换为0 会给您错误的答案。
这是一个向您展示问题的极端示例:
protected void exitFromApp() {
finish();
Intent localIntent = new Intent("android.intent.action.MAIN");
localIntent.addCategory("android.intent.category.HOME");
localIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(localIntent);
}
public static boolean isSimSupport(Context context)
{
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT);
}
test_zeros的均值和中位数并不代表实际数据。 使用na.rm是一个更好的选择,因为它会从计算中完全删除带有NaN的行。 这仍有问题,应谨慎使用。
无论您选择使用哪种选项,都应该了解它对分析的影响。