从数据库中获取二进制变量的自动化方法
Automated way to get binary variables from a database
我有一个关于登革热相关数据库的问题。我在这个数据库中有一些变量,其中有变量“病例”,它表示给定时期内的登革热病例数。但是我想对这些数据应用逻辑回归模型,所以想法是让这个变量成为整数,成为一个二元变量,也就是说,对于那个时期没有登革热病例的地方,我想把0代替我已经拥有的数量,对于有案例的地方,请输入 1。由于有 35628 行,我想以自动方式进行,以避免手动进行。任何人都知道如何进行才能将这个想法付诸实践吗?我是编程新手,我正在尝试用 R 语言实现它。如果他们知道可以执行此操作的软件包,那将大有帮助。每个社区都以一个数字为条件。
感谢您的帮助,非常感谢。
neighborhood
Dates
Cases
precipitation
Temperature
0
Jan/14
10
149,6
33,25
1
Fev/14
0
254
30,1
2
Mar/14
6
150
25,4
3
Apr/14
0
244,1
32,5
4
May/14
3
44,3
33,2
感谢您的帮助,非常感谢。
抱歉,我没有看到您想用 R 语言实现它。以下是 Python...
中的建议代码
假设 table 在 DataFrame df
中,您可以创建一个新列 '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)
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)
我有一个关于登革热相关数据库的问题。我在这个数据库中有一些变量,其中有变量“病例”,它表示给定时期内的登革热病例数。但是我想对这些数据应用逻辑回归模型,所以想法是让这个变量成为整数,成为一个二元变量,也就是说,对于那个时期没有登革热病例的地方,我想把0代替我已经拥有的数量,对于有案例的地方,请输入 1。由于有 35628 行,我想以自动方式进行,以避免手动进行。任何人都知道如何进行才能将这个想法付诸实践吗?我是编程新手,我正在尝试用 R 语言实现它。如果他们知道可以执行此操作的软件包,那将大有帮助。每个社区都以一个数字为条件。
感谢您的帮助,非常感谢。
neighborhood | Dates | Cases | precipitation | Temperature |
---|---|---|---|---|
0 | Jan/14 | 10 | 149,6 | 33,25 |
1 | Fev/14 | 0 | 254 | 30,1 |
2 | Mar/14 | 6 | 150 | 25,4 |
3 | Apr/14 | 0 | 244,1 | 32,5 |
4 | May/14 | 3 | 44,3 | 33,2 |
感谢您的帮助,非常感谢。
抱歉,我没有看到您想用 R 语言实现它。以下是 Python...
中的建议代码假设 table 在 DataFrame df
中,您可以创建一个新列 '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)
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)