我在SPSS中制作自定义表格,但是当单元格值(百分比)四舍五入为1位小时时,它们有时会加起来为99,9或100,1而不是100,0。我的老板要求我将所有内容整齐地加起来为100.这意味着稍微更改输出表中的某些值。
我编写了一些代码来从表中检索单元格值,这样可以正常工作,但我找不到允许我更改已生成输出中的单元格的任何方法或类。我尝试过这样的事情:
表[(rij,6)] = CellText.Number(11)
和
SpssDataCells [(rij,6)] = CellText.Number(11)
但它一直给我" AttributeError:' SpssClient.SpssTextItem'对象没有属性' DataCellArray'"
如何在SPSS中成功更改输出表的单元格值?
到目前为止我的代码:
import SpssClient, spss
# Python verbinden met SPSS.
SpssClient.StartClient()
OutputDoc = SpssClient.GetDesignatedOutputDoc()
OutputItemList = OutputDoc.GetOutputItems()
# Laatste tabel pakken.
lastTab = OutputItemList.Size()-2
OutputItem = OutputItemList.GetItemAt(lastTab)
Table = OutputItem.GetSpecificType()
SpssDataCells = Table.DataCellArray()
# For loop. Voor iedere rij testen of de afgeronde waarden optellen tot 100.
# Specifieke getallen pakken.
rij=0
try:
while (rij<20):
b14 = float(SpssDataCells.GetUnformattedValueAt(rij,0))
z14 = float(SpssDataCells.GetUnformattedValueAt(rij,1))
zz14 = float(SpssDataCells.GetUnformattedValueAt(rij,2))
b15 = float(SpssDataCells.GetUnformattedValueAt(rij,4))
z15 = float(SpssDataCells.GetUnformattedValueAt(rij,5))
zz15 = float(SpssDataCells.GetUnformattedValueAt(rij,6))
print [b14,z14,zz14,b15,z15,zz15]
rij=rij+1
except:
print 'Einde tabel'
答案 0 :(得分:2)
SetValueAt
方法是您更改表格中单元格值所需的方法。
PS。我认为你的老板应该把重点放在更重要的事情上,而不是花费可观的时间让百分比加起来整齐地达到100%(由于四舍五入)。还要确保在计算中使用尽可能多的小数点精度,以便最大限度地减少这种差异&#34;。
举一个例子来说明你可以用这样的操作做什么(除了修复回合错误):
上表显示了呼吸药物品牌(R3)的声音份额(SoV)及其在所有品牌(前两列数据)和SoV&amp; amp;仅在同一类别的品牌中排名(第三和第四列)。这与上个月(7月15日)进行比较,如果等级增加,则以绿色突出显示,并且添加向上箭头,如果等级下降,则以红色突出显示,并且向下添加红色箭头。只需添加一点,颜色和可视化,否则可能是枯燥的表格。