【发布时间】:2021-01-24 02:11:41
【问题描述】:
我想用 R 重写一个 python 代码(实际上是 Jupyter Book)。它是关于计算一些数据的 t 检验函数,然后使用箱线图将其可视化。
我是 Python 和 R 的初学者,但我做了一些尝试。这是python中的代码:
import math
import numpy as np
import pandas as pd
from myst_nb import glue
from scipy.stats import ttest_ind
from matplotlib import pyplot as plt
labels = ['non-failing heart (NF)', 'failing heart (F)']
data = [(99, 52), (96, 40), (100, 38), (105, 18),
(np.nan, 11), (np.nan, 5), (np.nan, 42),
(np.nan, 55), (np.nan, 53), (np.nan, 39),
(np.nan, 42), (np.nan, 50)]
df = pd.DataFrame.from_records(data, columns=labels)
tt = ttest_ind(df['non-failing heart (NF)'],
df['failing heart (F)'],
equal_var=False, nan_policy='omit')
pvalue = tt.pvalue
glue('pvalue', math.ceil(pvalue * 1000.0) / 1000.0)
这是我尝试过的:
library(math)
labels(data) <- c("non-failing heart (NF)", "failing heart (F)")
library(reticulate)
np <- import("numpy", convert=FALSE)
(x <- np$arange(1, 9)$reshape(2L, 2L))
## [[ 99. 52.]
## [ 96. 40.]
## [ 100. 38.]
## [ 105. 18.]
## [ np.nan. 11.]
## [ np.nan. 5.]
## [ np.nan. 42.]
## [ np.nan. 55.]
## [ np.nan 53.]
## [ np.nan 39.]
## [ np.nan. 42.]
## [ np.nan 50.]
## [ 23. 24.]]
df = pd.DataFrame.from_records(data, columns=labels)
tt = ttest_ind(df['non-failing heart (NF)'],
df['failing heart (F)'],
equal_var=False, nan_policy='omit')
pvalue = tt.pvalue
print(pvalue)
【问题讨论】:
-
你好,你还有一点路要走。就个人而言,如果我用 R 编写,我不会使用 reticulate。供您参考,这是内置的 R t.test 函数rdocumentation.org/packages/stats/versions/3.6.2/topics/t.test
-
@M.Viking 感谢您的帮助,好的,我将按照链接中的示例进行操作,只是一个问题,对于数据如何重写 np.nan 值?它们来自 R 无法提供的 python numpy
-
R 拥有
NA实体。 -
@Parfait 谢谢回复我,你能解释一下吗?您的意思是我可以使用 NA 代替 numpy,如果可以,如何使用?
-
Python 的
numpy.nan的最佳翻译是R 中的NA。实际上,R 对all types 有NA:NA_integer_、NA_real_、NA_complex_和NA_character_.NA表示NA_logical_。由于np.nan是浮点类型,NA_real_可能是最好的版本,但 R 将按照更高的类型顺序进行转换:逻辑 > 整数 > 数字 > 字符 > 因子 > 复数。
标签: python r python-3.x jupyter-notebook