从数据库中获取二进制变量的自动化方法



我有一个与登革热相关的数据库问题。我在这个数据库中有一些变量,其中的变量";案例";,其指示给定时期内登革热病例的数量。但我想把逻辑回归模型应用到这些数据中,所以我的想法是把这个变量用整数表示,变成一个二元变量,也就是说,对于那个时期没有登革热病例的地方,我想用0代替我已经有的数量,而对于有病例的地方则用1。由于有35628行,我想以自动化的方式进行,以避免手动进行。有人知道如何将这个想法付诸实践吗?我是编程新手,我正在尝试用R语言实现它。如果他们知道有一个包可以做到这一点,那会有很大帮助。每个邻域都以一个数字为条件。

我感谢你的帮助,非常感谢你。

病例>温度>td>33,25>
邻域 日期降水
0 2014年1月 10 149.6
1 Fev/14 0 254 30,1
2 2014年3月 6 150 25.4
3 Apr/14
4 2014年5月 3 44,333,2

R

从中选择

dat$CasesBin1 <- (dat$Cases > 0)
dat$CasesBin2 <- +(dat$Cases > 0)
dat
#   neighborhood  Dates Cases precipitation Temperature CasesBin1 CasesBin2
# 1            0 Jan/14    10         149.6       33.25      TRUE         1
# 2            1 Fev/14     0         254.0       30.10     FALSE         0
# 3            2 Mar/14     6         150.0       25.40      TRUE         1
# 4            3 Apr/14     0         244.1       32.50     FALSE         0
# 5            4 May/14     3          44.3       33.20      TRUE         1

至少在R中,我使用过的大多数逻辑回归工具都可以很好地使用integer(0/1(或logical,但您可能需要使用将要使用的工具进行验证。

数据:

dat <- structure(list(neighborhood = 0:4, Dates = c("Jan/14", "Fev/14", "Mar/14", "Apr/14", "May/14"), Cases = c(10L, 0L, 6L, 0L, 3L), precipitation = c(149.6, 254, 150, 244.1, 44.3), Temperature = c(33.25, 30.1, 25.4, 32.5, 33.2)), class = "data.frame", row.names = c(NA, -5L))

python

In [13]: dat
Out[13]: 
neighborhood   Dates  Cases  precipitation  Temperature
0             0  Jan/14     10          149.6        33.25
1             1  Fev/14      0          254.0        30.10
2             2  Mar/14      6          150.0        25.40
3             3  Apr/14      0          244.1        32.50
4             4  May/14      3           44.3        33.20
In [17]: dat['CasesBin1'] = dat['Cases'].apply(lambda x: (x > 0))
In [18]: dat['CasesBin2'] = dat['Cases'].apply(lambda x: int(x > 0))
In [19]: dat
Out[19]: 
neighborhood   Dates  Cases  ...  Temperature  CasesBin1  CasesBin2
0             0  Jan/14     10  ...        33.25       True          1
1             1  Fev/14      0  ...        30.10      False          0
2             2  Mar/14      6  ...        25.40       True          1
3             3  Apr/14      0  ...        32.50      False          0
4             4  May/14      3  ...        33.20       True          1
[5 rows x 7 columns]

数据:

In [11]: js
Out[11]: '[{"neighborhood":0,"Dates":"Jan/14","Cases":10,"precipitation":149.6,"Temperature":33.25},{"neighborhood":1,"Dates":"Fev/14","Cases":0,"precipitation":254,"Temperature":30.1},{"neighborhood":2,"Dates":"Mar/14","Cases":6,"precipitation":150,"Temperature":25.4},{"neighborhood":3,"Dates":"Apr/14","Cases":0,"precipitation":244.1,"Temperature":32.5},{"neighborhood":4,"Dates":"May/14","Cases":3,"precipitation":44.3,"Temperature":33.2}]'
In [12]: dat = pd.read_json(js)

很抱歉,我没有看到你想用R语言实现它。以下是Python中的建议代码。。。

假设表位于DataFramedf中,则可以创建一个新列"dengue_cases",当没有事例时为0,当有事例时为1

df['Cases'] = df['Cases'].astype('int')   #to ensure the correct data type in column
df['dengue_cases'] = df['Cases'].apply(lambda x: 0 if x==0 else 1)

上面的行将创建一个新列。如果您要替换原始列,请使用以下行:

df['Cases'] = df['Cases'].apply(lambda x: 0 if x==0 else 1)

最新更新