[英]Recode each element in an array list variable using for loop in R
我是R的新手,但我一直坚持下去。 我在下面有一个数据集,在其中创建了一个名为“ amountOfTxn_array”的新数组列表变量,该变量包含顺序的三个数值。 这些是从1月到3月的交易量。我的目标是从此数组列表创建新变量,以迭代“ amountOfTxn_array”中的每个数据元素。
> head(myData_05_Array)
Index accountID amountOfTxn_array
1:00 8887 c(36.44, 75.00,185.24)
2:00 13462 c(639.45,656.10,237.00)
3:00 47249 c(0, 24, 2012)
4:00 49528 c(1189.20,2326.26,1695.89)
5:00 57201 c(24.67, 0.00, 0.00)
6:00 57206 c(0.00, 661.98,2957.68)
str(myData_05_Array)类'data.table'和'data.frame':3176个对象。 4个变量的总和:$ accountID:int 8887 13462 47249 49528 57201 57206 58522 79073 80465 81032 ... $ amountOfTxn_200501:num 36.4 639.5 0 1189.2 24.7 ... $ amountOfTxn_200502:num 75656 24 2326 0 ... $ amountOfTxn_200503:num 185 237 2012 1696 0 ... $ amountOfTxn_array:列表3176
另外,下面提供了一个用于创建新变量的示例代码,其中,如果数组中的值大于100,我想标记1,否则标记0。 当我运行示例代码时,我得到“错误:(列表)对象不能被强制键入'double'错误。请问对此的解决方案。我非常感谢您的答复。谢谢!
> for(i in 1:3)
+ {
+ if(myData_05_Array$amountOfTxn_array[i] > 100){
+ myData_05_Array$testArray[i] <- 1
+ }
+ else{
+ myData_05_Array$testArray[i] <- 0
+ }
+ }
错误:(列表)对象无法强制输入“ double”类型
我期望的输出如下所示:amountOfTxn_testArray c(0,0,1)c(1,1,1)c(0,0,0)c(1,1,1)c(0,0, 0)c(0,1,1)
“对24列进行计算非常麻烦”
医管局! 欢迎来到dplyr
世界:
library(dplyr)
#generate dummy data
dummyDf <-read.table(text='Index accountID Jan Feb March
1:00 8887 36.44 75.00 185.24
2:00 13462 639.45 656.10 237.00
3:00 47249 0 24 2012
4:00 49528 1189.20 2326.26 1695.89
5:00 57201 24.67 0.00 0.00
6:00 57206 0.00 661.98 2957.68', header=TRUE, stringsAsFactors=FALSE)
逐列突变
#the dot (.) argument refers to the focal column
df %>% mutate_at(3:5, funs(as.numeric(.>100)))
按预定义名称对列进行突变
changeVars =c("Jan","Feb","March")
df %>% mutate_at(.cols=changeVars, funs(as.numeric(.>100)))
如果满足某些条件,则对列进行突变
df %>%mutate_if(is.double, funs(as.numeric(.>100)))
输出:
Index accountID Jan Feb March
1 1:00 8887 0 0 1
2 2:00 13462 1 1 1
3 3:00 47249 0 0 1
4 4:00 49528 1 1 1
5 5:00 57201 0 0 0
6 6:00 57206 0 1 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.