我在R.工作。我输入了命令:
table(shoppingdata$Identifier, shoppingdata$Coupon)
我有以下数据:
FALSE TRUE
197386 0 5
197388 0 2
197390 2 0
197392 0 3
197394 1 0
197397 0 1
197398 1 1
197400 0 4
197402 1 5
197406 0 5
首先,我不能用其他东西命名向量FALSE和TRUE,例如couponused。
最重要的是,我想创建一个第三列,它是FALSE + TRUE的总和(使用的优惠券+未使用的优惠券=访问次数)。实际列包含数百个条目。
解决方案根本不明显。
答案 0 :(得分:2)
你已经偶然发现了R数据类型的深渊,而不是你自己的错误。
假设shoppingdata
是数据框,
table(shoppingdata$Identifier, shoppingdata$Coupon)
创建一个“table”类型的对象。人们会认为使用,例如
as.data.frame(table(shoppingdata$Identifier, shoppingdata$Coupon))
会将其转换为与打印输出格式相同的数据框,但是,如下例所示,它没有!
# example
data <- data.frame(ID=rep(1:5,each=10),coupon=(sample(c(T,F),50,replace=T)))
# creates "contingency table", not a data frame.
t <- table(data)
t
# coupon
# ID FALSE TRUE
# 1 5 5
# 2 3 7
# 3 4 6
# 4 6 4
# 5 3 7
as.data.frame(t) # not useful!!
# ID coupon Freq
# 1 1 FALSE 5
# 2 2 FALSE 3
# 3 3 FALSE 4
# 4 4 FALSE 6
# 5 5 FALSE 3
# 6 1 TRUE 5
# 7 2 TRUE 7
# 8 3 TRUE 6
# 9 4 TRUE 4
# 10 5 TRUE 7
# this works...
coupons <- data.frame(ID=rownames(t),not.used=t[,1],used=t[,2])
# add two columns to make a third
coupons$total <- coupons$used + coupons$not.used
# or, less typing
coupons$ total <- with(coupons,not.used+used)
FWIW,我认为你的问题非常合理。更多人不使用R的原因是它的学习曲线非常陡峭,文档也不是很好。另一方面,一旦你攀登了学习曲线,R就会非常强大。