2016-04-21 55 views
-1

我有一个30000数据的数据帧。我想根据“客户ID”列创建一个新的“客户名称”列。 例如如果客户ID是“100”,在比新的列中的数据帧的任意位置应显示“customer1表”如果ID是“200”,那么它应显示“顾客2”我试图做到这一点一个for循环和函数,但徒劳无功。如何根据R中的数据框中的其他列获取列中每个元素的新名称?

我附上了查询的截图,我有:

AvailableData_and_OutputRequired

+0

那么CustomerID是否有“32500”的值?那么你是否想放弃尾随的两个零?那么像“356000”这样的数字呢?只需放2个零或全部三个? –

+0

是的,它有像“32500”这样的重复10次的随机值,我需要的是在所有这10个条目中获得一个“名称”作为“客户[我]”,其中我为这10位客户获得相同的价值,如果客户ID变化[i]也将改变。例如:如果customerid [firstcell] == customerid [second cell],那么CustomerName = CustomerName1,i = i + 1,否则(不匹配)customername = customername2,直到单元格值发生变化,我希望我能清除我的问题。 –

回答

3

如果你的截图是代表真实的数据,你可以尝试

data.frame$new.customer.id <- paste("Customer", CustomerID/100, sep = " ") 
0

作为建议的话,会您将来会为您的数据提供一个具有代表性的示例,例如:

dput(yourData) 

产生类似:

structure(list(Receipt_no = 111:116, Customer_ID = c(100L, 100L, 
200L, 300L, 100L, 400L), Customer_Name = structure(c(1L, 1L, 2L, 
3L, 1L, 4L), .Label = c("Customer 1", "Customer 2", "Customer 3", 
"Customer 4"), class = "factor")), .Names = c("Receipt_no", "Customer_ID", 
"Customer_Name"), class = "data.frame", row.names = c(NA, -6L)) 

你可以使用同样的变异dplyr。

library("dplyr") 
tbl_df(yourData)%>%mutate(`Customer Name`=paste("Customer",as.numeric(unlist(yourData%>%select(2)))/100) 
+0

当然,我会牢记这一点。我是R新手,所以从答案中可以看出,我的问题有点含糊。感谢您的建议 :) –

相关问题